{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "HK074FYkNwTi"
   },
   "source": [
    "# Deep Learning with PyTorch Step-by-Step: A Beginner's Guide"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "edtdvwWONwTl"
   },
   "source": [
    "# Chapter 10"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "a8kZ1PM4NwTm",
    "outputId": "50b86efc-2663-4a17-905e-c85e6af9ec66"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Downloading files from GitHub repo to Colab...\n",
      "Finished!\n"
     ]
    }
   ],
   "source": [
    "try:\n",
    "    import google.colab\n",
    "    import requests\n",
    "    url = 'https://raw.githubusercontent.com/dvgodoy/PyTorchStepByStep/master/config.py'\n",
    "    r = requests.get(url, allow_redirects=True)\n",
    "    open('config.py', 'wb').write(r.content)    \n",
    "except ModuleNotFoundError:\n",
    "    pass\n",
    "\n",
    "from config import *\n",
    "config_chapter10()\n",
    "# This is needed to render the plots in this chapter\n",
    "from plots.chapter8 import *\n",
    "from plots.chapter9 import *\n",
    "from plots.chapter10 import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "JyxowqR5NwTp"
   },
   "outputs": [],
   "source": [
    "import copy\n",
    "import numpy as np\n",
    "\n",
    "import torch\n",
    "import torch.optim as optim\n",
    "import torch.nn as nn\n",
    "import torch.nn.functional as F\n",
    "from torch.utils.data import DataLoader, Dataset, random_split, TensorDataset\n",
    "from torchvision.transforms import Compose, Normalize, Pad\n",
    "\n",
    "from data_generation.square_sequences import generate_sequences\n",
    "from data_generation.image_classification import generate_dataset\n",
    "from helpers import index_splitter, make_balanced_sampler\n",
    "from stepbystep.v4 import StepByStep\n",
    "# These are the classes we built in Chapter 9\n",
    "from seq2seq import PositionalEncoding, subsequent_mask, EncoderDecoderSelfAttn"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "P7lEypJINwTq"
   },
   "source": [
    "# Transform and Roll Out!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "vZ5tuOx2NwTr"
   },
   "source": [
    "## Narrow Attention"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "fBiNshjSNwTs"
   },
   "source": [
    "### Chunking"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "SdxrUQNTNwTt"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/attn_narrow_transf.png?raw=1)\n",
    "\n",
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/multihead_chunking.png?raw=1)\n",
    "\n",
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/attn_narrow_first_head.png?raw=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "W8LNjGjUNwTu"
   },
   "source": [
    "### Multiheaded Attention"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "mLiecSFaNwTu"
   },
   "outputs": [],
   "source": [
    "class MultiHeadedAttention(nn.Module):\n",
    "    def __init__(self, n_heads, d_model, dropout=0.1):\n",
    "        super(MultiHeadedAttention, self).__init__()\n",
    "        self.n_heads = n_heads\n",
    "        self.d_model = d_model\n",
    "        self.d_k = int(d_model / n_heads)\n",
    "        self.linear_query = nn.Linear(d_model, d_model)\n",
    "        self.linear_key = nn.Linear(d_model, d_model)\n",
    "        self.linear_value = nn.Linear(d_model, d_model)\n",
    "        self.linear_out = nn.Linear(d_model, d_model)\n",
    "        self.dropout = nn.Dropout(p=dropout)\n",
    "        self.alphas = None\n",
    "\n",
    "    def make_chunks(self, x):\n",
    "        batch_size, seq_len = x.size(0), x.size(1)\n",
    "        # N, L, D -> N, L, n_heads * d_k\n",
    "        x = x.view(batch_size, seq_len, self.n_heads, self.d_k) \n",
    "        # N, n_heads, L, d_k\n",
    "        x = x.transpose(1, 2)  \n",
    "        return x\n",
    "\n",
    "    def init_keys(self, key):\n",
    "        # N, n_heads, L, d_k\n",
    "        self.proj_key = self.make_chunks(self.linear_key(key))\n",
    "        self.proj_value = self.make_chunks(self.linear_value(key))\n",
    "        \n",
    "    def score_function(self, query):\n",
    "        # scaled dot product\n",
    "        # N, n_heads, L, d_k x # N, n_heads, d_k, L -> N, n_heads, L, L\n",
    "        proj_query = self.make_chunks(self.linear_query(query))\n",
    "        dot_products = torch.matmul(proj_query, \n",
    "                                    self.proj_key.transpose(-2, -1))\n",
    "        scores =  dot_products / np.sqrt(self.d_k)\n",
    "        return scores\n",
    "            \n",
    "    def attn(self, query, mask=None):\n",
    "        # Query is batch-first: N, L, D\n",
    "        # Score function will generate scores for each head\n",
    "        scores = self.score_function(query) # N, n_heads, L, L\n",
    "        if mask is not None:\n",
    "            scores = scores.masked_fill(mask == 0, -1e9)\n",
    "        alphas = F.softmax(scores, dim=-1) # N, n_heads, L, L\n",
    "        alphas = self.dropout(alphas)\n",
    "        self.alphas = alphas.detach()\n",
    "        \n",
    "        # N, n_heads, L, L x N, n_heads, L, d_k -> N, n_heads, L, d_k\n",
    "        context = torch.matmul(alphas, self.proj_value)\n",
    "        return context        \n",
    "                                \n",
    "    def output_function(self, contexts):\n",
    "        # N, L, D\n",
    "        out = self.linear_out(contexts) # N, L, D\n",
    "        return out\n",
    "        \n",
    "    def forward(self, query, mask=None):\n",
    "        if mask is not None:\n",
    "            # N, 1, L, L - every head uses the same mask\n",
    "            mask = mask.unsqueeze(1)\n",
    "\n",
    "        # N, n_heads, L, d_k\n",
    "        context = self.attn(query, mask=mask)\n",
    "        # N, L, n_heads, d_k\n",
    "        context = context.transpose(1, 2).contiguous()\n",
    "        # N, L, n_heads * d_k = N, L, d_model\n",
    "        context = context.view(query.size(0), -1, self.d_model)        \n",
    "        # N, L, d_model\n",
    "        out = self.output_function(context)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "WPndJg1cNwTx",
    "outputId": "aaab312f-9bd5-41ab-8758-d80ab0c48b93"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([16, 2, 4])"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dummy_points = torch.randn(16, 2, 4) # N, L, F\n",
    "mha = MultiHeadedAttention(n_heads=2, d_model=4, dropout=0.0)\n",
    "mha.init_keys(dummy_points)\n",
    "out = mha(dummy_points) # N, L, D\n",
    "out.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rtuAVgk8NwTy"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/attn_narrow_2heads.png?raw=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ZYhQbFhCNwTz"
   },
   "source": [
    "## Stacking Encoders and Decoders"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "w3Xk9MI_NwTz"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/stacked_encdec.png?raw=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "eAPDj4UeNwT0"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/stacked_layers.png?raw=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "c2eXfMjCNwT0"
   },
   "source": [
    "## Wrapping \"Sub-Layers\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DVCV9AG4NwT0"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/sublayer.png?raw=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "luPQVuJKNwT1"
   },
   "source": [
    "$$\n",
    "\\Large\n",
    "\\begin{aligned}\n",
    "&\\text{outputs}_{\\text{norm-last}}=&\\text{norm(inputs + dropout(sublayer(inputs))}\n",
    "\\\\\n",
    "&\\text{outputs}_{\\text{norm-first}}=&\\text{inputs + dropout(sublayer(norm(inputs)))}\n",
    "\\end{aligned}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "C_Ke5z7WNwT1"
   },
   "source": [
    "## Transformer Encoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "mXYoPU3UNwT2"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/enc_both.png?raw=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zVPRvS0tNwT2"
   },
   "source": [
    "$$\n",
    "\\large\n",
    "\\begin{aligned}\n",
    "&\\text{outputs}_{\\text{norm-last}}=&\\text{norm}(\\underbrace{\\text{norm(inputs + att(inputs))}}_{\\text{Output of SubLayer}_0} + \\text{ffn}(\\underbrace{\\text{norm(inputs + att(inputs))}}_{\\text{Output of SubLayer}_0}))\n",
    "\\\\\n",
    "\\\\\n",
    "&\\text{outputs}_{\\text{norm-first}}=&\\underbrace{\\text{inputs + att(norm(inputs))}}_{\\text{Output of SubLayer}_0}+\\text{ffn(norm(}\\underbrace{\\text{inputs + att(norm(inputs))}}_{\\text{Output of SubLayer}_0}))\n",
    "\\end{aligned}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "FYdXRKjbNwT3"
   },
   "outputs": [],
   "source": [
    "class EncoderLayer(nn.Module):\n",
    "    def __init__(self, n_heads, d_model, ff_units, dropout=0.1):\n",
    "        super().__init__()\n",
    "        self.n_heads = n_heads\n",
    "        self.d_model = d_model\n",
    "        self.ff_units = ff_units\n",
    "        self.self_attn_heads = MultiHeadedAttention(n_heads, d_model, \n",
    "                                                    dropout=dropout)\n",
    "        self.ffn = nn.Sequential(\n",
    "            nn.Linear(d_model, ff_units),\n",
    "            nn.ReLU(),\n",
    "            nn.Dropout(dropout),\n",
    "            nn.Linear(ff_units, d_model),\n",
    "        )\n",
    "        \n",
    "        self.norm1 = nn.LayerNorm(d_model)\n",
    "        self.norm2 = nn.LayerNorm(d_model)\n",
    "        self.drop1 = nn.Dropout(dropout)\n",
    "        self.drop2 = nn.Dropout(dropout)\n",
    "         \n",
    "    def forward(self, query, mask=None):\n",
    "        # Sublayer #0\n",
    "        # Norm\n",
    "        norm_query = self.norm1(query)\n",
    "        # Multi-headed Attention\n",
    "        self.self_attn_heads.init_keys(norm_query)\n",
    "        states = self.self_attn_heads(norm_query, mask)\n",
    "        # Add\n",
    "        att = query + self.drop1(states)\n",
    "        \n",
    "        # Sublayer #1\n",
    "        # Norm\n",
    "        norm_att = self.norm2(att)\n",
    "        # Feed Forward\n",
    "        out = self.ffn(norm_att)\n",
    "        # Add\n",
    "        out = att + self.drop2(out)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "id": "8ex52QCuNwT3"
   },
   "outputs": [],
   "source": [
    "class EncoderTransf(nn.Module):\n",
    "    def __init__(self, encoder_layer, n_layers=1, max_len=100):\n",
    "        super().__init__()\n",
    "        self.d_model = encoder_layer.d_model\n",
    "        self.pe = PositionalEncoding(max_len, self.d_model)\n",
    "        self.norm = nn.LayerNorm(self.d_model)\n",
    "        self.layers = nn.ModuleList([copy.deepcopy(encoder_layer)\n",
    "                                     for _ in range(n_layers)])\n",
    "    \n",
    "    def forward(self, query, mask=None):\n",
    "        # Positional Encoding\n",
    "        x = self.pe(query)\n",
    "        for layer in self.layers:\n",
    "            x = layer(x, mask)\n",
    "        # Norm\n",
    "        return self.norm(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "id": "tYcNyRvgNwT4"
   },
   "outputs": [],
   "source": [
    "enclayer = nn.TransformerEncoderLayer(d_model=6, nhead=3, dim_feedforward=20)\n",
    "enctransf = nn.TransformerEncoder(enclayer, num_layers=1, norm=nn.LayerNorm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dZHPrqBeNwT4"
   },
   "source": [
    "## Transformer Decoder"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "aMBfkO6KNwT5"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/dec_both.png?raw=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "id": "IihqH32DNwT5"
   },
   "outputs": [],
   "source": [
    "class DecoderLayer(nn.Module):\n",
    "    def __init__(self, n_heads, d_model, ff_units, dropout=0.1):\n",
    "        super().__init__()\n",
    "        self.n_heads = n_heads\n",
    "        self.d_model = d_model\n",
    "        self.ff_units = ff_units\n",
    "        self.self_attn_heads = MultiHeadedAttention(n_heads, d_model, \n",
    "                                                    dropout=dropout)\n",
    "        self.cross_attn_heads = MultiHeadedAttention(n_heads, d_model,\n",
    "                                                     dropout=dropout)\n",
    "        self.ffn = nn.Sequential(\n",
    "            nn.Linear(d_model, ff_units),\n",
    "            nn.ReLU(),\n",
    "            nn.Dropout(dropout),\n",
    "            nn.Linear(ff_units, d_model),\n",
    "        )\n",
    "        \n",
    "        self.norm1 = nn.LayerNorm(d_model)\n",
    "        self.norm2 = nn.LayerNorm(d_model)\n",
    "        self.norm3 = nn.LayerNorm(d_model)\n",
    "        self.drop1 = nn.Dropout(dropout)\n",
    "        self.drop2 = nn.Dropout(dropout)\n",
    "        self.drop3 = nn.Dropout(dropout)\n",
    "                \n",
    "    def init_keys(self, states):\n",
    "        self.cross_attn_heads.init_keys(states)\n",
    "         \n",
    "    def forward(self, query, source_mask=None, target_mask=None):\n",
    "        # Sublayer #0\n",
    "        # Norm\n",
    "        norm_query = self.norm1(query)\n",
    "        # Masked Multi-head Attention\n",
    "        self.self_attn_heads.init_keys(norm_query)\n",
    "        states = self.self_attn_heads(norm_query, target_mask)\n",
    "        # Add\n",
    "        att1 = query + self.drop1(states)\n",
    "        \n",
    "        # Sublayer #1\n",
    "        # Norm\n",
    "        norm_att1 = self.norm2(att1)\n",
    "        # Multi-head Attention\n",
    "        encoder_states = self.cross_attn_heads(norm_att1, source_mask)\n",
    "        # Add\n",
    "        att2 = att1 + self.drop2(encoder_states)\n",
    "        \n",
    "        # Sublayer #2\n",
    "        # Norm\n",
    "        norm_att2 = self.norm3(att2)\n",
    "        # Feed Forward\n",
    "        out = self.ffn(norm_att2)\n",
    "        # Add\n",
    "        out = att2 + self.drop3(out)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "id": "dEtnxSOCNwT5"
   },
   "outputs": [],
   "source": [
    "class DecoderTransf(nn.Module):\n",
    "    def __init__(self, decoder_layer, n_layers=1, max_len=100):\n",
    "        super(DecoderTransf, self).__init__()\n",
    "        self.d_model = decoder_layer.d_model\n",
    "        self.pe = PositionalEncoding(max_len, self.d_model)\n",
    "        self.norm = nn.LayerNorm(self.d_model)\n",
    "        self.layers = nn.ModuleList([copy.deepcopy(decoder_layer)\n",
    "                                     for _ in range(n_layers)])\n",
    "        \n",
    "    def init_keys(self, states):\n",
    "        for layer in self.layers:\n",
    "            layer.init_keys(states)\n",
    "    \n",
    "    def forward(self, query, source_mask=None, target_mask=None):\n",
    "        # Positional Encoding\n",
    "        x = self.pe(query)\n",
    "        for layer in self.layers:\n",
    "            x = layer(x, source_mask, target_mask)\n",
    "        # Norm\n",
    "        return self.norm(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "id": "8syruFiKNwT6"
   },
   "outputs": [],
   "source": [
    "declayer = nn.TransformerDecoderLayer(d_model=6, nhead=3, dim_feedforward=20)\n",
    "dectransf = nn.TransformerDecoder(declayer, num_layers=1, norm=nn.LayerNorm)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "y4AGPXYHNwT6"
   },
   "source": [
    "## Layer Normalization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "dNp8EWjyNwT7",
    "outputId": "67180946-a35d-4ee0-bee1-10c86a2006fa"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-3.8049,  1.9899, -1.7325,  2.1359],\n",
       "         [ 1.7854,  0.8155,  0.1116, -1.7420]],\n",
       "\n",
       "        [[-2.4273,  1.3559,  2.8615,  2.0084],\n",
       "         [-1.0353, -1.2766, -2.2082, -0.6952]],\n",
       "\n",
       "        [[-0.8044,  1.9707,  3.3704,  2.0587],\n",
       "         [ 4.2256,  6.9575,  1.4770,  2.0762]]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "d_model = 4\n",
    "seq_len = 2\n",
    "n_points = 3\n",
    "\n",
    "torch.manual_seed(34)\n",
    "data = torch.randn(n_points, seq_len, d_model)\n",
    "pe = PositionalEncoding(seq_len, d_model)\n",
    "inputs = pe(data)\n",
    "inputs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ImijG1DsNwT7"
   },
   "source": [
    "$$\n",
    "\\Large\n",
    "\\overline{X}_{n,l} = \\frac{1}{D}\\sum_{d=1}^Dx_{n,l,d}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "0vtGWClmNwT7",
    "outputId": "aa197bee-5e04-4a4b-faff-2372b0d25005"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-0.3529],\n",
       "         [ 0.2426]],\n",
       "\n",
       "        [[ 0.9496],\n",
       "         [-1.3038]],\n",
       "\n",
       "        [[ 1.6489],\n",
       "         [ 3.6841]]])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inputs_mean = inputs.mean(axis=2).unsqueeze(2)\n",
    "inputs_mean"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "53ISCto4NwT7"
   },
   "source": [
    "$$\n",
    "\\Large\n",
    "\\sigma_{n,l}(X) = \\sqrt{\\frac{1}{D}\\sum_{d=1}^D(x_{n,l,d}-\\overline{X}_{n,l})^2}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "WwXyiLX6NwT8",
    "outputId": "8dcb8018-6f72-499f-a779-57557ad3cf1e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[6.3756],\n",
       "         [1.6661]],\n",
       "\n",
       "        [[4.0862],\n",
       "         [0.3153]],\n",
       "\n",
       "        [[2.3135],\n",
       "         [4.6163]]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "inputs_var = inputs.var(axis=2, unbiased=False).unsqueeze(2)\n",
    "inputs_var"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "M4bt0D6TNwT8"
   },
   "source": [
    "$$\n",
    "\\Large\n",
    "\\text{standardized}\\ x_{n,l,d}=\\frac{x_{n,l,d}-\\overline{X}_{n,l}}{\\sigma_{n,l}(X) + \\epsilon}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ZU-GKwHYNwT9",
    "outputId": "59879b6d-b802-4660-b67a-567fcb35b6e2"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-1.3671,  0.9279, -0.5464,  0.9857],\n",
       "         [ 1.1953,  0.4438, -0.1015, -1.5376]],\n",
       "\n",
       "        [[-1.6706,  0.2010,  0.9458,  0.5238],\n",
       "         [ 0.4782,  0.0485, -1.6106,  1.0839]],\n",
       "\n",
       "        [[-1.6129,  0.2116,  1.1318,  0.2695],\n",
       "         [ 0.2520,  1.5236, -1.0272, -0.7484]]])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(inputs - inputs_mean)/torch.sqrt(inputs_var+1e-5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "zLBLX7RUNwT9",
    "outputId": "6f292d8c-db83-4fd5-ec32-b52e794f88d9"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OrderedDict([('weight', tensor([1., 1., 1., 1.])),\n",
       "             ('bias', tensor([0., 0., 0., 0.]))])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_norm = nn.LayerNorm(d_model)\n",
    "layer_norm.state_dict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ej9uWpuhNwT9",
    "outputId": "95d88b7e-6952-4ef6-9e62-06cd37ad4fc9"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(tensor(-1.4901e-08, grad_fn=<MeanBackward0>),\n",
       " tensor(1.0000, grad_fn=<StdBackward0>))"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_norm = nn.LayerNorm(d_model)\n",
    "normalized = layer_norm(inputs)\n",
    "\n",
    "normalized[0][0].mean(), normalized[0][0].std(unbiased=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "4EcY83PUNwT-",
    "outputId": "0425aac2-ee2f-4484-9a4f-c2f50e94c469"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "OrderedDict([('weight', tensor([1., 1., 1., 1.])),\n",
       "             ('bias', tensor([0., 0., 0., 0.]))])"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_norm.state_dict()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Ef34JrRgNwT_"
   },
   "source": [
    "$$\n",
    "\\Large\n",
    "\\text{layer normed}\\ x_{n,l,d} = b_d + w_d\\ \\text{standardized}\\ x_{n,l,d}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "0HnjDVp_NwT_"
   },
   "source": [
    "$$\n",
    "\\Large\n",
    "\\text{layer normed}\\ x_{n,l,d} = \\text{standardized}\\ x_{n,l,d}\\ \\gamma_d + \\beta_d\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "fsXCvrZ0NwT_"
   },
   "source": [
    "### Batch vs Layer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "URBonuuSNwT_",
    "outputId": "85ecc7c7-31ad-46c7-ba2a-ca8b9a7637de"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-14.4193,  10.0495,  -7.8116,  ..., -15.4844, -18.0732,  -3.9566]],\n",
       "\n",
       "        [[  2.6628,  -3.5462, -23.6461,  ...,  -0.9403, -18.4375, -37.4197]],\n",
       "\n",
       "        [[-24.6397,  -1.9127, -16.4244,  ..., -17.3708, -26.0550, -14.0706]],\n",
       "\n",
       "        [[ 13.7988,  21.4612,  10.4125,  ...,  -3.2333, -17.0188,   3.9237]]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch.manual_seed(23)\n",
    "dummy_points = torch.randn(4, 1, 256)\n",
    "dummy_pe = PositionalEncoding(1, 256)\n",
    "dummy_enc = dummy_pe(dummy_points)\n",
    "dummy_enc"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tcxkCEjJNwUA"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/layer_vs_batch_norm.png?raw=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 289
    },
    "id": "VKHBcHcTNwUA",
    "outputId": "0f3f1714-5a73-4bb7-b9b7-4ee897ddf5f7"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABCgAAAEQCAYAAAByeUWbAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd1QU19sH8O9KEwmyijQRwYKAIljAgoiFqFiwRyyxJdbYsRDECiqiIKCosZeIGizEFnt5oxJ7TUFBBCGKRnGxoIiw7x8e5ue6CyyysALfzzmeZGfuzDw7y3MZnr1zRySRSKQgIiIiIiIiIlKjCuoOgIiIiIiIiIiIBQoiIiIiIiIiUjsWKIiIiIiIiIhI7VigICIiIiIiIiK1Y4GCiIiIiIiIiNSOBQoiIiIiIiIiUjsWKKjUkUgkmDBhAmrXro3q1aujR48e+Ouvvwq9nz179kAsFqN+/fpy6zIyMrBo0SI0bdoUpqamaNCgAUaPHo2kpKR847KxsYFYLMaZM2dk1kVGRkIsFsv9c3V1LXTcROVZSeW/r68v7OzsYGxsDBcXF0RFRcm1mzdvHlxcXFCzZk2YmprC2dkZQUFByMjIkGmXnZ2NJUuWwMHBAcbGxmjSpAlWrVpV6JiJ6H/++ecf9OrVC+bm5qhVqxZ++OEHPH/+XKltle1HFP3eFovFuHXrVp77zq9v6dq1q8L9sT8gUt7n5v6NGzfQp08f2NnZwcTEBPXq1cM333yDS5cuybRLSkrKM/clEolM27dv32L27NmwsbGBqakpOnTogPPnz8sdOycnB8uWLUPDhg1hYmKCVq1aYd++fUU7EWWYproDICoMqVSK/v3748GDB1iyZAnEYjGWLVsGT09PnD17Fubm5krtRyKRwNfXFyYmJgrXT5w4EYcOHYKvry8aNWqElJQUBAYGokePHjh37hy++uoruW3mzZtX4HG3bNmC6tWrC68rVaqkVLxEVHL5P3jwYFy+fBl+fn6wtrbGgQMHMGrUKEilUnh5eQntXr58iUGDBsHa2ho6Ojq4ePEiQkJCcOPGDezYsUNoN3XqVGzfvh3Tp0+Hk5MTzp49i9mzZ+P169eYPn160U4KUTn06NEjdOvWDfXq1cOWLVuQnp6OOXPmwMvLC0eOHEGFCnl//1bYfmTgwIEYPny4zLK6desq3HdBfQsANGjQAGFhYTLLatasWdBbJiIULffT09NRu3ZtDBw4ECYmJnj69ClWrVqFrl274siRI2jatKlMe29vb3Tu3Flmmb6+vszrCRMm4OjRowgICICVlRXWrVuHPn364NixY3BwcBDaLVy4ECtWrMDs2bPh6OiIvXv3YtiwYfjll1/QsWNHFZyZsoUFCipVfvvtN1y4cAH79++Hm5sbAMDZ2RmOjo4IDw/HkiVLlNrP3LlzYW9vDxMTE/zf//2fzLqMjAxER0dj0qRJmDhxorDc2NgYffv2xcWLF+Hu7i6zzYULFxAVFYWgoCBMmDAhz+M2bNgQtWvXVvbtEtFHSiL///jjD5w8eRIrV67EoEGDAADt27fHw4cPMXfuXPTt2xcaGhoAgJCQEJlt27Rpgzdv3iA0NBTPnj2DoaEhkpOTsXXrVkyfPl0oRrRr1w4vX75ESEgIRowYgSpVqhTpvBCVN8uXL0dWVhZ27NgBsVgMADA1NUXXrl1x8OBBdO/ePc9tC9uPVK9eHc7OzkrFlV/fkktfX1/p/RGRrKLkfps2bdCmTRuZZe7u7qhTpw527twpV6CwsrLKN1dv376NXbt2ISIiAt9++y0AoFWrVmjRogUWLVqEnTt3AgD+++8/rFixApMnTxb+RnBzc0NCQgLmzZvHAoUCvMWjjAgMDIRYLMbdu3fRu3dvVK9eHfb29ti2bRsAYOfOnXB2doa5uTm6deuG+/fvy2y/efNmtGrVCiYmJqhduzbGjx8vN1xq7dq16NChA6ysrFCzZk18/fXXOHr0qEyb3GFRmzZtwsKFC2FjY4OaNWvCy8sL//77b5Hf5+HDh2FmZiZcVACAgYEBPDw88Ntvvym1j9xiQnBwsML12dnZyM7OlquSGhgYAPgwTOtjWVlZmDJlCiZPngwrK6tCvBsi1WD+qy7/r1y5AgDo0KGDzHJ3d3ekpqbi8uXL+e6/atWqACAUMa5du4acnByF+3v79i2OHz+uVNxEHysvOZ+Xw4cPo1OnTsIfKMCHPwxq1KhRYF+gin5EkYL6FiJVYO5/fu4roqenBx0dHWhqFv47+8OHD0NLSwu9e/cWlmlqaqJ37944deoUMjMzAQAnT57Eu3fvZEZgAkC/fv3w999/IzExsdDHLutYoChjhg0bho4dOyIyMhKOjo4YP348/P39sXHjRsydOxcrV65EfHw8RowYIWwzb948TJs2DW3btsWOHTvg7++PkydPom/fvsjOzhbaPXjwAIMHD8aWLVuwadMmNG7cGF5eXjhx4oRcHMuWLcP9+/cRERGBxYsX4/Llyxg1apRMm5ycHLx//77Af1KpVNgmNjYWdnZ2csezs7NDSkoKXr16le/5ycrKEiqYeY1k0NfXh5eXF9asWYPff/8dr169wj///IM5c+bA3t5ervoaHh6Od+/eYdKkSfkeGwA8PDxQtWpV2NjYYMqUKUrfL0ukDOZ/0fM/d3iotra2zHIdHR0AH+59/dT79+/x6tUrnDlzBitXrsS3334rXDzl7k9LS0vp/REpq6znvCJv3rxBUlJSnn3BnTt38t2+sP3Ihg0bYGxsDDMzM3h6eiImJkZuW2X6lly3bt1CzZo1Ua1aNbi4uGDr1q35tidShLkvS5nc/zierKwsJCcnCyMbhw4dKtdu/vz5MDQ0RM2aNdG/f3+5eWpiY2NhaWkpd7u2nZ0d3r17h4SEBKGdjo6OXN+Q+z6Ujbs84S0eZcyECRMwYMAAAEDjxo1x5MgRbNq0CTdv3kTlypUBAKmpqfjxxx/x4MEDSKVSLF++HD4+PvDx8RH2U7duXXh4eODw4cPo1q0bAGDBggXC+pycHLRp0wbx8fHYsGEDvv76a5k4atasifXr1wuvnz17htmzZ+PRo0cwMzMDAIwbN07mPu28fDzU+vnz5wrv1cwdIi2RSBTOD5ErLCwMmZmZ8Pb2zveYq1atgo+Pj8xQMScnJ/z6668yf7gkJCQgODgYO3fuFP7gUMTU1BQzZsyAk5MTKlasiIsXLyI8PBwXL17EqVOnULFixXzjIVIG87/o+W9tbQ0AuHz5ssyoh9xJtD4tKv79999wcXERXvfv3x/h4eFy+7ty5QocHR0L3B9RYZT1nFdEIpFAKpXKfIOaq0qVKoiLi8t3/4XpR/r16wcPDw+YmpoiOTkZy5cvR/fu3REdHY3WrVsL2yp7beHi4oJ+/fqhTp06SE9Px86dOzFx4kQ8fvyY89FQoTD3ZSmT+7mGDRuG/fv3AwCMjIwQFRUFW1tbYb2Ojg6GDx+Odu3aoVq1aoiLi0NISAg6deqEkydPwsbGBsCHviSvWHLX5/7XwMAAIpEo33b0PyxQlDEfX1CLxWIYGRnBwcFB6KwAoF69egCAf//9F3fv3kVOTg769euH9+/fC22cnJygr6+PmJgYocO6ceMGAgMDce3aNTx9+lSodOZegH/s0/upcmezTklJETqsH3/8Ua7KqoilpaVS770gCQkJCAkJwbZt2wosCCxYsABRUVEICAhAkyZNkJKSgqCgIPTt2xeHDh2Cnp4egA8T6HTp0gVt27bNd3/u7u4y81a4ubmhfv36GDRoEKKiojBkyJAivz8i5n/elM3/9u3bw8bGBj4+PjAwMEC9evWwf/9+7NmzBwDkJuCqXbs2Tp8+jdevX+PSpUsIDQ1FdnY21q1bBwCwtbVF27ZtERgYCCsrKzRt2hRnz57F6tWrFe6PqDDKes5/HCOAzxqGXRRr166Ved2lSxe0bNkSCxcuxJEjRwAU7trCz89P5nXXrl0xaNAghISEYOzYsfkWWIk+xtz/fP7+/pg8eTJSUlKwfv16eHl5Yd++fWjcuDGAD18qhoaGCu1dXFzg7u6Oli1bIiQkRK5fINVjgaKM+bSSp6WlpXAZAGRmZuK///4DACEpP5WWlgbgQ0fTvXt32NraYsmSJahRowY0NTWxcOFChUOTPp30LXfUwdu3b4VlFhYWSs26n3svd+77+/QRP8D/qo+KKpm5fHx84ObmBicnJ2EfWVlZkEqlkEgk0NHRga6uLv755x+EhoZi+fLlMoUDJycnNG3aFFu3bsXYsWMRHR2NS5cu4dSpU8L+Xr9+Lfw3PT1dmLdCkS5dukBPTw/Xrl1jgYJUgvlf9PzX1NTEli1bMGLECOHCy9jYGHPmzMHMmTPlZuevWLGicP5cXV1hYmKCcePGYdSoUcLkWqtWrcLIkSPRp08fAEDlypUxf/58TJkyJd/Z/okKUpZzPikpSWbUEQDcvHkTRkZGEIlEefYFBU06W5R+RF9fH506dcLPP/8sLFO2b8lL7hcff//9N5o1a5Zv7ES5mPuylMn9XFZWVrCyskKTJk3g4eGBli1bYsGCBcIXEYrUqFEDLVq0wLVr14RlYrEYycnJCmMB/nduxGIx0tPTIZVKZUZRfNqO/ocFinIud0K36OjofIcpnTx5Ei9evMCmTZtkOpmMjIzPPvbnDPmytbXF6dOn5drExsaiRo0a+X77EBsbi+TkZIUTWVpZWWHMmDFYvHgx/v77bwBAkyZNZNrUqVMHBgYGuHv3rrC/jIwMtGjRQm5/gwYNQuXKlfHgwYMC39+nQ76ISgrz/4OP8z/3OOfOnUNSUhIyMjJQt25dHDhwAAAU5vvHci/+EhIShAJF9erVcejQITx69AjPnz9HrVq1hHtZC9ofkSqVppw3MzOTy3czMzNoa2ujZs2aiI2Nlds2NjYWrVq1ynf/RelHcn38e7swfYuy+yRSNea+Ytra2mjQoAFu376tVPuP89TW1hYHDx5ERkaGzDwUsbGx0NbWFuacsLW1RWZmJu7fvy8zD0Xu+8i9ZYT+hwWKcq5du3aoUKECkpOT0a5duzzb5XZMH0/0Fh8fj4sXL6J69eqfdezPGfLVuXNnREZG4ty5c3B1dQUAvHjxAkeOHEHfvn3z3c/GjRtlKrrAh/tGb9y4gc2bNwsdsbGxMYAPs+/b29sLbePj45Geni4MWRs4cKAQQ67bt29j5syZCAgIgJOTU77xHDx4EK9fv5YrhBCVFOa/fP4rOnZWVhbWrVuH9u3bo1atWvke5/z58wCgsJ2ZmRnMzMwglUqxevVq1KtXT+Y+dqLiVppyXltbO89vezt37owdO3bIjFT8448/kJycjM6dO+e7/6L0Iy9evMDRo0dlfm9/Tt/ysaioKOjq6gpD44mKA3NfsYyMDFy/fl3h7SsfS05OxoULF9ClSxdhmYeHBwIDA/Hrr79i4MCBAD7cmhIdHY127doJc9N9/fXX0NLSQlRUFH788Udh+6ioKNSvX59PAFSABYpyrlatWpg8eTJmzJiB+Ph4tGrVChUrVkRKSgrOnDmDwYMHw83NDW3btoWmpibGjBmD8ePHIzU1FYGBgahRo4bcYzeVZWlpWej7y7t06YJmzZph9OjR8Pf3h1gsxrJlyyCVSuWeomFoaIgBAwYgIiICABQ+y3j79u3Q0dGR+SPBxcUF9vb2mDVrFiQSCRo1aoSUlBQEBwejcuXKwqRE+cXfsGFDtGzZUnjds2dPtG7dGnZ2dtDV1cWFCxcQEREBe3t79OvXr1DngEhVmP/y+Q98mJXcwsICpqamwj2qKSkpMo9Z+/PPPzF79mz07NkTVlZWyMzMRExMDH766Sd06NBBZqj2hg0boKOjA0tLSzx58gQ7duzAhQsXsG/fPs5BQSWqtOV8XiZOnIioqCgMGDAA3t7eePHiBebMmQMnJyd4enoK7c6dO4cePXogIiJC+N2tbD+yYsUKxMXFoXXr1sIkmREREXj8+LHMPejK9i0xMTEICwtDt27dYGlpifT0dOzYsQOHDx/GvHnzhLmtiIoDcx+YPHkyqlSpgkaNGsHQ0BDJyclYt24dHj9+jDVr1gjb+vn5IScnB82aNYOhoSHi4+OxbNkyiEQiTJs2TWjn6OiI3r17w9fXF+/fv4elpSU2bNiApKQkmT7CyMgI48aNQ2hoKL766is4OjoiOjoav//+u1IjS8ojFigIc+bMQb169bB+/XqsX78eIpEI5ubmaNOmDerUqQPgw6Nw1q1bh0WLFmHAgAGoVasW5s2bhxMnTuDcuXMlFmuFChXwyy+/YNasWZg6dSoyMzPh7OyMAwcOoEaNGjJts7OzZR6bpCwNDQ3s378fISEh2Lx5Mx4+fAhDQ0M0a9YMM2fOhIWFRaH3aWtri19++QUPHz5EZmYmzM3NMXz4cEyfPj3fp38QFTfmv7yMjAwEBAQgNTUVBgYGcHd3x5YtW2SOYWxsDENDQ4SEhODJkyfQ1dWFlZUVAgIC5OaUyc7ORlhYGJKTk6GrqwtXV1ccP35c4aPSiIpbacr5vFSvXh0HDhyAn58fhgwZAi0tLXTp0gULFy6UKfpJpVJkZ2fL/GGlbD9St25dHDx4EAcPHsSLFy+gr6+P5s2bY8WKFWjatGmhYzY1NUVOTg4CAwPx7NkzaGlpoUGDBli/fn2BIzeIVKG8537Tpk3x888/Y/PmzcjIyICZmRmcnJywYsUKNGjQQGhna2uLjRs3Yvv27Xj9+jWqVq0KNzc3+Pj4yI20WLlyJQICArBgwQKkp6fD3t4eu3fvRqNGjWTazZ49G3p6evjpp5/w5MkT1K1bF5s3b4aHh0cxnanSTSSRSPJ/6CwRERERERERUTHj2FIiIiIiIiIiUjsWKIiIiIiIiIhI7VigICIiIiIiIiK1Y4GCiIiIiIiIiNSOBQoiIiIiIiIiUjsWKKjEZGdnY8WKFfD09IS1tTVq1KgBNzc3bN26Nc9nK+/YsQPt2rWDmZkZatasCQ8PD/z111/C+n///RfTp09Hhw4dYGZmBrFYjKSkJKVjSktLg4+PDxwdHWFqagoHBwdMnz4dT58+lYt95cqVaNmyJapXrw4bGxsMGjQIf/75p0y7yMhIiMViuX+urq5yx/7999/h4eEBU1NTWFlZYdSoUXjy5InSsROVJp+T/wCQlZUFFxcXiMVibN26VW59SkoKhgwZgpo1a8LCwgLffvstkpOTC4zn+vXrmDRpEpydnWFmZgZ7e3uMHDkSiYmJ+W63Z88eiMVi1K9fX25dRkYGfH19YWdnB2NjY7i4uCAqKkrhfg4ePIjWrVvDxMQE9vb2WLp06Wc/FpXoS1YcuX/y5El4enqiXr16MDY2Rv369TFs2DDExsYWOr4pU6ZALBZj1KhRcusSExOF/qV69ero1q0brl+/LtMmPj4ePj4+cHFxgbm5OWxsbNC/f3/cvn1bbn+F6SOISrviuO7v2rWrwutssViMPn36FBiTMjmd6+HDhxg3bpzQzzg4OGD+/PkybfKKZ9WqVXL7e/PmDQIDA9GkSRMYGxvD2toaXl5eePfuXYFxlzea6g6Ayo83b95g6dKl6N+/P8aMGYOvvvoKx44dw6RJkxAXF4eAgACZ9v7+/li9ejUmTpyI+fPn482bN7h69SrevHkjtElISMCvv/6KRo0aoWXLljh16pTS8UilUgwYMADx8fGYOXMm6tWrhzt37mDRokW4fv06jh8/DpFIBABYuHAhwsLC4O3tjdatWyMtLQ3BwcHw9PTEuXPnYG5uLrPvLVu2oHr16sLrSpUqyayPiYlB79694e7ujq1btyItLQ0LFixAjx49cObMGejo6Cj9PohKg8Lmf64VK1bg2bNnCtdlZGSge/fu0NHRwapVqyASibBw4UJ4enri/Pnz0NPTyzOePXv2IDY2FqNHj4atrS0ePXqEpUuXol27djh79ixq1Kght41EIoGvry9MTEwU7nPw4MG4fPky/Pz8YG1tjQMHDmDUqFGQSqXw8vIS2p08eRJDhgzB4MGDsXDhQty6dQsBAQF49eqV3MUPUWlXHLn//PlzNGrUCCNGjIChoSFSUlIQFhaGDh064Pz586hZs6ZSsV24cAFRUVGoXLmy3Lq0tDR07twZX331FcLCwqCrq4uVK1fC09MTJ0+ehI2NDQDg1KlTOHv2LAYMGABHR0ekp6dj+fLl6NChA44cOYJGjRoJ+1S2jyAqC4rjuj8kJAQvX76U2e7SpUvw8/ND586d841H2ZwGgKSkJHh4eMDS0hJBQUEwMjLCgwcPkJCQILffBg0aICwsTGbZp31QVlYW+vbti6SkJHh7e8PGxgZPnz7FmTNn+OWEAiKJRCJVdxBUemRnZ0MqlUJTs/C1rezsbLx48QJVqlSRWT5u3Djs3r0biYmJ0NXVBfChs+nUqRN+/vlndOvWLc995uTkoEKFDwOBtm7diokTJ+LmzZuwtLQsMJ74+Hg4OTkhLCwMw4YNE5Zv3LgR3t7euHz5MqytrQEAtra2cHV1xfr164V2d+/eRbNmzRAaGorhw4cD+DCCYty4cbh27Rpq166d57F79OiBBw8e4PLly8K5vH79Otq1a4fg4GCMGDGiwPiJSlpJ5X+uxMREuLi4IDw8HCNHjsTy5csxZMgQYf3q1avh5+eHK1euCPmWmJiIpk2bYv78+Rg/fnye8Tx9+hTVqlWTWfbgwQM4Ojpi2rRp8PPzk9tm0qRJSE5OhomJCf7v//4Pf//9t7Dujz/+QOfOnbFy5UoMGjRIWO7l5YWbN2/ir7/+goaGBgCgdevW0NfXx2+//Sa0CwoKQnBwMP788888CyBE6vKl5b4icXFxcHZ2RkBAACZMmFBgXFlZWXBzc8M333yDTZs2oWXLlli7dq2wfunSpVi8eDGuXLmCWrVqAQBev36NRo0aoVWrVti8eTMA4NmzZ6hatarwhQYApKenw8HBAR4eHlizZg2AwvURRF+KL+26X5Hx48cjKioKd+7ckTvWx5TNaQDo06cPnj9/jqNHj0JLSyvPfXbt2hXZ2dk4cuRIvjGGhoZi2bJl+OOPPxR+AUKyeItHGXLt2jWIxWKZi95cU6dORZ06dZCVlQXgw7eHnp6eqFOnDszNzdG6dWts375dbjuxWIyAgACEhobCwcEBRkZGMkOtCkNDQ0Nhx9GkSRNkZmbKfFOyYcMGWFpaFthJ5RYnPkfukCp9fX2Z5QYGBgAgM/zs3bt3SrVT1pUrV9CuXTuZDr9x48aoWrUqDh48WOj9EZWl/M/l7e2N3r17o1mzZgr3efjwYTg7O8sUA62srNC8eXOF5+FjnxYngA/feFSrVg2PHj2SW5f7TWtwcLDC/V25cgUA0KFDB5nl7u7uSE1NxeXLlwF8uCXl9u3bct+Wenl5ISsrC8ePH883bqJPlcfcV6Rq1aoAoPQfUsuXL0d2dnaexYwrV66gTp06wh8yAKCnp4eWLVvi6NGjeP/+PQDA0NBQpjgBfLg+qFu3rkxfomwfQaSsspT7yl73fyojIwP79u2Dh4dHvsUJQPmcvn//Pk6ePIlRo0blW5wojA0bNqBHjx4sTiiJBYoypEmTJrC2tpa7n/Hdu3fYu3cvevfuLSRaYmIievTogXXr1iEyMhIeHh6YOHEiNm7cKLff7du349ixYwgICEBUVBTMzMwAAO/fv1fqX0HOnz8PAwMDmJqaCssuXLgAe3t7hIeHw87ODoaGhmjZsiV+/fXXopwiGXZ2dnBxccHSpUtx/fp1vHr1ClevXsWSJUvQoUMHmaFe33//PaKionDo0CG8ePECiYmJmDp1KszNzdGrVy+5fXt4eKBq1aqwsbHBlClT8Pz5c5n1GhoaCjs9HR0d/PPPPyp7j1R+lKX8B4CoqChcv34931seYmNjYWdnJ7fczs4Od+7cKfDYn7pz5w7+++8/mdwHPnzTOnnyZEyYMCHPkVG5xVJtbW2Z5bm3a+Xmde498p/GbWVlhUqVKn1W3FS+lcfcz5WdnY13797h3r17mDx5MkxMTNC3b98Ct0tISEBwcDCCg4Pz/AOkQoUKef6efvPmDe7fv5/n/p8/f45//vlHpi9Rto8gUlZZyv3Pve4/ePAgXr58iQEDBhR4XGVz+sKFCwAAXV1d9OzZE8bGxrC0tMTo0aORlpYmt/2tW7eELzhcXFzk5sxJTk5GSkoKrKysMHHiRFhYWMDExATdu3fHrVu3Coy7POIcFGWMl5cXgoODkZ6eLnzDf+zYMTx//hz9+/cX2k2dOlX4/5ycHLi6uuLx48fYsGEDvvvuO5l9SqVS7N27V24IpqJvIBWRSCR5rjt58iSio6Ph5+cn861Hamoq0tLScOvWLfj7+6NatWrYvHkzhg0bhsjISHTt2lWpY+dHJBJh165dGD16NNq1aycs79Spk8wwLwDw8/ODtrY2Bg8eLIyYqFu3Lg4ePCh8awMApqammDFjBpycnFCxYkVcvHgR4eHhuHjxIk6dOoWKFSsK2+Z+m5LrwYMHSE1NVVm1lsqfspL/EokEfn5+mD9/PgwNDfHq1SuF2z9//hxisVhueZUqVfI9riLv37/HlClTUK1aNQwePFhmXVhYGDIzM+Ht7Z3n9rm3g12+fFnmG9JLly4JsX78X0Vxi8ViuWImkTLKW+7ncnd3x40bNwAAtWvXxv79+2FkZFRgbN7e3vD09ISbm1uebaytrXHmzBmkpaUJv+dzcnJw9epVAMg3V2fMmAGpVIqxY8fK7A8ouI8gKoyykvufe92/c+dOGBkZyY1MUkTZnE5NTQXw4dYRLy8vTJkyBffv38f8+fNx584dnDp1Sig4uri4oF+/fqhTpw7S09Oxc+dOTJw4EY8fP8b06dNl9hceHo7GjRtjw4YNyMzMRGBgILp164bz58/DwsKiwPjLExYoyph+/fph4cKF2Ldvn3C/5i+//AJra2s0bdpUaHfv3j0sWrQIMTExePz4sfBHt6LJGd3d3eU6KQA4ffp0kWKNjY3F999/j9atW2Py5Mky63JycvDy5UscOHBAmGCqTZs2aNWqFZYtW6aSAgXw4Z7yK1euIDQ0FPXq1cPdu3cRGBiIoUOHYufOnUIHtGHDBoSEhGDatGnCJJmhoVJjK+cAACAASURBVKHo1asXDh8+LFSX3d3d4e7uLuzfzc0N9evXx6BBgxAVFSV8JmPGjMGoUaOwYMECjB49Gs+fP8ekSZNQoUKFIt22QuVbWcn/2bNno1atWnKFguI0ffp0XLp0CVFRUTLFg4SEBISEhGDbtm1CgVGR9u3bw8bGBj4+PjAwMEC9evWwf/9+7NmzB0DRbkcjKkh5zf01a9bg5cuXSExMxIoVK4TfyfnNQ/XLL7/g2rVrcl8SfOq7777DmjVrMGbMGAQFBUFXVxchISHCk8Lyyully5Zh165dWLFihcyIK/YRVBzKSu5/znX/o0ePcObMGYwZM0apW7uUzencc9OqVSvhts42bdqgcuXK+O6773Dy5EmhIPLpfFVdu3bFoEGDEBISgrFjx+Krr74S9qerq4udO3cKE+c3btwYTZo0wfr16zlB9idYoChjatasCRcXF+zcuRNDhgyBRCLBsWPHhCoeALx69Qo9e/ZEpUqVMHfuXNSqVQva2trYsGEDtm3bJrfPT4df5mrYsOFnx5mYmIhevXrB0tIS27Ztk+tYqlatinfv3snMfl2hQgW4ublh06ZNn33cjx09ehS7d+/Gvn370KZNGwAfOiMrKyvhIqdr1654/vw5Zs6ciQkTJmDmzJnC9m5ubnBwcMDy5csRGBiY53G6dOkCPT09XLt2Tfjl0a9fP9y9excREREIDg6GSCRC79690aFDBw7zpM9WFvL/ypUriIyMxP79+5Geng4Awozdb968gUQigYGBAUQiEcRiscJvavIaWZGXefPmYfPmzVi9ejXat28vs87Hxwdubm5wcnISjpWVlQWpVAqJRAIdHR3o6upCU1MTW7ZswYgRI9CxY0cAgLGxMebMmYOZM2cKE1/mxqUobolEUuA9tESKlLfcz5V7C4WTkxO+/vprODg4ICwsDKGhoQqP/+rVK/j5+WHy5MnQ1tYW8lAqlSIrKwsSiQR6enrQ0tKClZUV1q5di+nTp6Nx48YAAEdHR/zwww9YsWKFwslsN27cCH9/f8yaNUuuyKJsH0FUGGUh94HPu+6PiopCTk6OUrd3AFA6p3NHV3w8uhqAcH1w69atfEds9O3bF4cOHcLff/+NZs2aCftr3ry5zFP9atSoAWtra97moQALFGWQl5cXJk2ahAcPHuDUqVN49+4d+vXrJ6y/fPkykpOTcfjwYbRs2VJYntd9Y59O/pTrc4d6/fvvv+jevTv09fWxd+9ehY/3srW1zTNh84qnsHJn4M/tpHI1adIEwIendHTt2hXx8fHIzMwUlueqUqUKrKyscPfuXaWO92ncs2bNwpQpU5CYmAgjIyMYGxujWbNmaNGixee+JaJSn/937txBTk6OwomyfHx84OPjg8TERIjFYtja2gpzOnwsNjZWbh6JvAQHByMsLAxLliyRGQ778b6Sk5NhZWUlt87KygpjxozB4sWLAXzot86dO4ekpCRkZGSgbt26OHDgAAAIeW1rayvs9+MJAHO3UTZuok+Vp9xXRCwWo3bt2gofA5jr2bNnePr0Kfz9/eHv7y+zLiUlBdHR0di2bZsQQ48ePdCtWzfEx8dDW1sbtWrVgre3N2rUqCE3JHvnzp2YOnUqxo8fj2nTpik8vjJ9BFFhlfbcBz7vun/Hjh2wt7cvVOFEmZzO/T2dF2VHO+XGbWVlpXBESmH3V56wQFEG9ezZEzNmzMCuXbtw4sQJtGzZUuZ5vBkZGQAgM9eBRCIpcNb7T33OUK+nT5+iZ8+eAIDo6GgYGhoqbNetWzf83//9H65fvy4UEHJycnDmzBm5QsHnMjY2BvBhFuS2bdsKy3PvRcu9bePjdl26dBHaPX/+HPfv34ejo2O+xzl48CBev36tMG49PT00aNAAAHDixAncvXsXK1as+Pw3ReVeac//r7/+Wrhgz/XkyRN8//33mDBhAjp27IivvvoKANC5c2fMnj0biYmJQgEhKSkJFy9exNy5cwuM56effsKCBQswe/ZsjBo1SmGbjRs34u3btzLLwsLCcOPGDWzevBnm5uZy2+QOL8/KysK6devQvn17YdZwCwsL2Nvby9zyBXz4JkhLS0up+2iJFClPua/IkydPEBcXh2+++SbPNiYmJnLHAD5MhF2/fn1MnToV9evXl1mnoaEhFA4fPXqEvXv3YuLEiTJtDhw4gHHjxmHIkCFYsGBBnsfPlV8fQVRYpT33gcJf91+/fh2xsbFYuHBhoWMqKKednZ1hYmKCU6dOYfTo0cLyEydOAECBf4dERUVBV1dX6Eu0tLTQsWNHxMTE4PXr19DT0wPwYfLMuLg4dO7cudDvoaxjgaIMqly5Mrp06YL169cjNTUV4eHhMuubN2+OypUrY9q0afD19UVGRgaWLl0KQ0NDvHjxQunjfDryoCBv3rxB79698eDBA0RERODhw4d4+PChsN7Gxkaoqg4ePBjr16/H4MGDMWvWLBgaGmLz5s2Ii4tDdHS0zH737dsHAMJEWSdOnEC1atVgaGgIV1dXoZ2hoSEGDBiAiIgIAICnpycWLFiAMWPGYPr06bC2tkZcXByCgoJQo0YN4RsUS0tLdOrUCcuXL4dIJIKrqyvS0tIQHh6OzMxMfP/998IxevbsidatW8POzg66urq4cOECIiIiYG9vL1PNvnnzJk6cOCEUNy5cuIDly5dj0qRJaN68eaHOK9HHSnv+m5iYyA11zr0/1NraGq1btxaWDx06FOvWrcPAgQPh5+cHkUiEhQsXwtzcHMOHDxfaPXjwAI0bN8aMGTPg4+MD4MMj13x9ffH111/Dzc1N5hF/+vr6wjcozs7Ocu9l+/bt0NHRkYkF+HDvuYWFBUxNTZGSkoL169cjJSUFR48elWk3Z84ceHl5YfLkyejTpw9u3bqF4OBgjBkzhsO86bOVp9wfNGgQHB0d0aBBA+jr6+PevXtYtWoVNDQ0MH78eKHduXPn0KNHD0RERGDAgAGoWLGiXN4CH+7DNzY2llmXlZWFOXPmoFWrVtDX10dsbCxCQ0NhZ2cnc4zz589jxIgRsLe3x8CBA2X6Em1tbZkvMZTtI4gKo7TnPlC4637gw+gJTU1NmWvrjyn6va9sTmtqamLu3Ln44YcfMGXKFHh6eiIhIQEBAQFwdXUVJteNiYlBWFgYunXrBktLS6Snp2PHjh04fPgw5s2bJxQiAMDX1xfu7u7o168fxo8fj8zMTAQFBcHAwCDPL0jKMxYoyigvLy/s3bsXFStWRI8ePWTWVatWDT///DNmzZqFoUOHwtTUFGPGjMHz588RFBRUbDE9efJEGL41cuRIufUHDhwQLg4qVqyIffv2Yc6cOfjxxx/x5s0bODg4YPfu3cJ8EbmGDh0q8zp3puJWrVrh0KFDwvLs7GxkZ2cLrytXrozjx49j8eLFCA8Px+PHj2FiYgIPDw/8+OOPMt/UbNq0CREREdizZw9WrlwJfX19ODo6IiQkRKbDtrW1xS+//IKHDx8iMzNT+ENp+vTpMhMRaWtr4/jx4wgPD8e7d+9Qr149LFu2DN9++22hzyvRp0p7/itLT08P+/fvx8yZMzFmzBhIpVK4ubkhMDBQJn+lUimys7OFiaqAD4VMqVSKEydOCN+K5Pq071BWRkYGAgICkJqaCgMDA7i7u2PLli1yzz3v2LEjtmzZgqCgIGzfvh3Gxsbw9vbOc1g4kbLKS+47OzsjOjoaERERyMrKgrm5OVxdXTFlyhSZCTIV5b6yRCIREhISsHv3bqSnp6N69er49ttv4e3tLfOo0N9//x2ZmZm4efMmOnXqJLMPCwsL3L59W3itbB9BVFilPfcLc92flZWFPXv2wN3dPc+n9ijKfWVzGgAGDhyIChUqIDw8HJGRkahSpQr69euHuXPnCrdumJqaIicnB4GBgXj27Bm0tLTQoEEDrF+/Xu5xx7a2tti/fz/mzp2L7777DlpaWnB1dUVkZKQwUpv+RySRSKTqDoKIiIiIiIiIyje1zspx/vx59O/fH3Z2dhCLxYiMjJRZL5VKERgYCFtbW5iamqJr1658wgERERERERFRGaTWAsXr169Rv359LF68WOHspuHh4Vi5ciWCgoJw6tQpGBkZoVevXsJjp4iIiIiIiIiobPhibvEwNzfHkiVLMGjQIAAfRk/Y2tpi5MiRwn25b968gbW1NQICAmQmQCMiIiIiIiKi0u2LffBqUlISHj9+jPbt2wvLdHV14eLigosXL6oxMiIiIiIiIiJStS+2QPH48WMAkJud1cjICE+ePFFHSERERERERERUTL7YAgURERERERERlR9fbIHCxMQEAPDff//JLP/vv//K5PNi4+Li1B3CF43np2A8R6UTP7eC8RwVjOeodOLnlj+en4LxHJVO/NwKxnNUsLJ6jr7YAoWlpSVMTExw+vRpYdnbt2/xxx9/oHnz5mqMjIiIiIiIiIhUTVOdB3/16hUSEhIAADk5OUhJScGtW7dQpUoVWFhYYOzYsVi2bBmsra1Rt25dBAcHQ09PD3379lVn2ERERERERESkYmotUFy/fh2enp7C68DAQAQGBmLAgAFYvXo1Jk2ahDdv3mD69OmQSCRo2rQp9u7dC319fTVGTURERERERESqptYCRevWrSGRSPJcLxKJ4OvrC19f3xKMioiIiIiIiIhK2hc7BwURERERERERlR8sUBARERERERGR2rFAQURERERERERqxwIFEREREREREakdCxREREREREREpHYsUBARERERERGR2rFAQURERERERERqxwIFEREREREREakdCxREREREREREpHYsUBARERERERGR2rFAQURERERERERqxwIFEREREREREakdCxREREREREREpHYsUBARERERERGR2rFAQURERERERERqxwIFEREREREREakdCxREREREREREpHYsUBARERERERGR2rFAQURERERERERqxwIFEREREREREakdCxREREREREREpHYsUBARERERERGR2rFAQURERERERERqxwIFEREREREREakdCxREREREREREpHYsUBARERERERGR2n3RBYrs7GwsWLAADg4OMDExgYODAxYsWID379+rOzQiIiIiIiIiUiFNdQeQn7CwMKxfvx6rV69G/fr18ddff2Hs2LHQ1tbGjBkz1B0eEREREREREanIF12guHTpEjw8PNC5c2cAgKWlJTp37oyrV6+qOTIiIiIiIiIiUqUv+haPFi1a4Ny5c7h79y4AIDY2FmfPnkWHDh3UHBkRERERERERqZJIIpFI1R1EXqRSKRYsWIBly5ZBQ0MD79+/x7Rp0zBr1qw8t4mLiyvBCIlIFaytrVWyH+Y/UenC3Ccqv5j/ROVTQblf5Fs8pFIp3rx5g0qVKhV1V3L27t2LnTt3Yv369bC1tcXt27fx448/ombNmhgyZIjCbVTV2ZW0uLi4Uht7SeD5KRjPUenMf35uBeM5Klh5P0el9b2X98+tIDw/BeM5Kp35z8+tYDxHBSur50jpWzwOHjwIf39/mWUrVqyAubk5atSogYEDByIjI0Olwc2ZMwfjx49Hnz590KBBA/Tv3x/jxo1DaGioSo9DREREREREROqldIEiLCwMqampwusbN25g7ty5aNq0KYYNG4bjx48jPDxcpcFlZGRAQ0NDZpmGhgZycnJUehwiIiIiIiIiUi+lb/G4d+8e+vbtK7zetWsXqlatit27d0NHRweamprYu3cvfH19VRach4cHwsLCYGlpCVtbW9y6dQsrV65E//79VXYMIiIiIiIiIlI/pQsUb9++lZln4tSpU3B3d4eOjg4AoGHDhti2bZtKg1uyZAkWLlyIqVOn4unTpzAxMcHQoUMxY8YMlR6HiIiIiIiIiNRL6Vs8zM3Ncf36dQAfRlPExsaiffv2wvq0tDRUrFhRpcHp6+tj8eLF+PPPP5GamoqbN29izpw5Kj8OEREREREREamX0iMovLy8EBgYiEePHiE2NhZVqlSBh4eHsP7atWuoW7dusQRJRERERERERGWb0iMovL294e3tjYcPH6JGjRrYtm0bDAwMAADPnz9HTEwMOnfuXGyBEhEREREREVHZpfQICg0NDcyaNQuzZs2SW1elShXExcWpNDAiIiIiIiIiKj+UHkHxsXv37uHChQtIT09XdTxEREREREREVA4VqkCxa9cu2Nvbw9nZGV26dMGNGzcAAM+ePUPTpk0RHR1dLEESERERERERUdmmdIFi3759GDVqFOrVqwd/f39IpVJhnaGhIerVq4edO3cWS5BEREREREREVLYpXaAICQlB27ZtsXfvXgwcOFBuvZOTE/7880+VBkdERERERERE5YPSBYq7d++iW7duea43MjLC06dPVRIUEREREREREZUvShcoKlWqhNevX+e5/v79+zA0NFRJUERERERERERUvihdoHBzc8P27dvx7t07uXWPHj3Cli1b0L59e5UGR0RERERERETlg6ayDWfPng13d3e0bdsWPXv2hEgkwvHjx3H69Gls2bIFGhoa8PHxKc5YiYiIiIiIiKiMUnoERZ06dXD06FGYmJhg8eLFkEqlWLlyJcLDw9GwYUMcOXIEFhYWxRkrEREREREREZVRSo2gyM7OxsOHD2FsbIzo6GhIJBIkJCQgJycHVlZWqFatWnHHSURERERERERlmFIjKHJyctC4cWNERkYCAMRiMZo0aQInJycWJ4iIiIiIiIioyJQqUGhpacHU1BQikai44yEiIiIiIiKickjpOSgGDRqE7du34+3bt8UZDxERERERERGVQ0o/xaNu3brIycmBs7MzBgwYACsrK+jq6sq169Wrl0oDJCIiIiIiIqKyT+kCxahRo4T/X7p0qcI2IpGIBQoiIiIiIiIiKjSlCxQHDhwozjiIiIiIiIiIqBxTukDh6upanHEQERERERERUTmm9CSZRERERERERETFRekRFJ6engW2EYlE2L9/f5ECIiIiIiIiIqLyR+kCRU5ODkQikcyy7OxsJCcn499//0Xt2rVhZmam8gCJiIiIiIiIqOxTukBx6NChPNcdOXIEkydPxsKFC1USFBERERERERGVLyqZg8LDwwP9+vWDr6+vKnZHREREREREROWMyibJrFWrFq5fv66q3QlSU1MxZswY1KlTByYmJmjevDnOnTun8uMQERERERERkfoofYtHft6/f4/o6GgYGhqqYncCiUSCTp06oUWLFoiKioKhoSGSkpJgZGSk0uMQERERERERkXopXaAYN26cwuXp6em4cuUKHj9+rPI5KJYvXw5TU1OsWbNGWGZlZaXSYxARERERERGR+ildoPj999/lnuIhEokgFovRokULDBkyBO3bt1dpcIcOHYK7uzuGDx+Os2fPwtTUFEOGDMHIkSPlYiEiIiIiIiKi0kvpAsXt27eLMw6FEhMTsWHDBvzwww+YPHkybt++DR8fHwDAqFGjSjweIiIiIiIiIioeIolEIlWm4Y4dO+Di4gJLS0uF65OSkhATE4MBAwaoLDgjIyM0btwYx44dE5b5+/vj4MGDuHTpksJt4uLiVHZ8IioZ1tbWKtkP879sWpukVaTtR1lmqSgSUjXmPhUn9h1fNuY/UflUUO4Xag6KNWvW5FmguHr1KsaNG6fSAoWJiQlsbGxkltWrVw8pKSl5bqOqzq6kxcXFldrYSwLPT8F4jkpn/vNzU0JSIqoaVv3sza2tK6swmC9Tef85Kq3vvbx/bgUp6vmp+upFkY5fGvoO/gyVzvzn51YwnqOCldVzpPRjRqXS/AdavHnzBhoaGkUO6GMtWrRAfHy8zLL4+HhYWFio9DhEREREREREpF75jqBITk7GgwcPhNd3797F+fPn5dpJJBJs2rQpz9EVn+uHH35Ax44dERwcjN69e+PWrVtYu3YtZs+erdLjEBEREREREZF65VugiIyMRFBQEEQiEUQiEUJCQhASEiLXTiqVQkNDA8uXL1dpcE2aNEFkZCT8/f2xdOlS1KhRAzNnzsSIESNUehwiIiIiIiIiUq98CxS9evWCnZ0dAGDYsGEYPXo0WrZsKdNGJBJBT08PDg4OMDIyUnmAnTp1QqdOnVS+XyIiIiIiIiL6cuRboLCxsREmqVy5ciVatWql8ts4iIiIiIiIiIiUforHwIEDizMOIiIiIiIiIirHlC5QAMDbt29x4MAB3LhxAy9evEBOTo7MepFIhIiICJUGSERERERERERln9IFipSUFHh6eiIxMREGBgZ48eIFqlSpAolEgpycHBgaGkJPT684YyUiIiIiIiKiMqqCsg3nzp2LtLQ0HDt2DFevXoVUKsXGjRvx8OFDzJ49G7q6uti3b19xxkpEREREREREZZTSBYozZ87g+++/h7OzMypU+N9mOjo68Pb2houLC3x9fYslSCIiIiIiIiIq25QuULx+/RpWVlYAAG1tbQDAy5cvhfUtW7bE+fPnVRsdEREREREREZULShcozMzMkJqaCgDQ09NDlSpVcPv2bWF9cnIytLS0VB8hEREREREREZV5Sk+S6eLiglOnTmHGjBkAgO7duyMiIgKamprIycnBTz/9hE6dOhVboERERERERERUdildoPjhhx9w+vRpvH37FhUrVsS8efOQmJiIRYsWAQBcXV2xePHiYguUiIiIiIiIiMoupQsUDRo0QIMGDYTXYrEYv/76KyQSCTQ0NKCvr18sARIRERERERFR2ad0gSIvYrFYFXEQERERERERUTlWqAJFfHw8lixZgrNnz+Lp06fYvXs32rRpg2fPnmHOnDkYPnw4nJyciitWonIp8PoLpdqlPdNC1VfybX0bV1Z1SEREVAh59eN59dufYj9OVHopyn/mPlHelH6Kx+3bt9G+fXucPn0azs7OyM7OFtYZGhrin3/+wYYNG4olSCIiIiIiIiIq25QuUMyfPx8mJia4cuUKQkNDIZVKZda7u7vj4sWLKg+QiIiIiIiIiMo+pQsUFy5cwNChQ2FgYACRSCS33sLCAqmpqSoNjoiIiIiIiIjKB6ULFACgo6OT57onT57ku56IiIiIiIiIKC9KFygcHR1x9OhRheuysrKwZ88eODs7qywwIiIiIiIiIio/lC5QTJ06FadOncLEiRNx+/ZtAEBqaipOnDiB7t27Iz4+Ht7e3sUWKBERERERERGVXUo/ZrR9+/ZYs2YNZsyYgW3btgEAxo4dC6lUCgMDA6xduxYtWrQotkCJiIiIiIiIqOxSukABAN988w26du2K06dP4969e8jJyUGtWrXQvn176OvrF1eMRERERERERFTG5VmgsLKyQnh4OHr06AEACAoKgqenJ+rXr4+uXbuWWIBEREREREREVPblOQdFRkYGXr9+LbxevHgx/vrrrxIJioiIiIiIiIjKlzxHUNSqVQt79uxBo0aNhNs30tLSkJycnO8OLSwsVBshEREREREREZV5eRYofHx8MHr0aLi6ugIARCIRfH194evrm+8O09LSVBshEREREREREZV5eRYoevfujaZNm+LixYt48uQJZs+ejb59+8LBwaEk4yMiIiIiIiKiciDfp3hYWlrC0tISALB27Vr06tULXbp0KZHAFFm2bBn8/f0xcuRILF26VG1xEBEREREREZFqKf2Y0Vu3bhVnHAW6fPkyNm/ejAYNGqg1DiIiIiIiIiJSvTyf4vElSU9Px8iRIxEREQGxWKzucIiIiIiIiIhIxUpFgWLy5Mno0aMH3Nzc1B0KERERERERERUDpW/xUJctW7YgISEBa9euVap9XFxcMUdUfEpz7CWhvJ6ftGdahWgr/xSd6SfU92SdUZZZSrWztrZWyfGK+2dkbZLyn4XytICkxGLYryxlP4u8FOW9F/XYgJbCn21lxcU9LuLx1aNw51z+56jo5734lZbcB4or/xX3258q6s+wevP3861NKpn+MS+lpe8orddHpSn/iyKv67iSyP2iUnff8aV/tl+C0niOCsr9L7pAERcXB39/fxw5cgRaWsoliKo6u5IWFxdXamMvCeX5/FR99UKpdmnP0lDVsGoxR1M41taVS/h4xfszouxnURgl9bkV9bMoynsv8s9BUmKRzlFJ/xyqSmHOuaKfo9L6vj9HSfx+UGf+l+r8LYoi5n5RlYYcKs/XR7m+9PevKP9KKveLSp19B3+2C1ZWz1Get3h8++23iImJEV6fP38eT58+LZGgcl26dAnPnj1DixYtYGhoCENDQ5w/fx7r16+HoaEhMjMzSzQeIiIiIiIiIioeeRYofvvtN6SkpAivPT09cfr06RIJKlfXrl0RExODs2fPCv8aN26MPn364OzZs9DW1i7ReIiIiIiIiIioeOR5i0f16tVx9epV9OvXDwAglUohEolKLDAAEIvFck/tqFSpEqpUqYL69euXaCxEREREREREVHzyLFD069cPoaGh2LVrF/T19QEAvr6+CAgIyHNnIpEIN27cUH2URERERERERFSm5VmgmD17NmxsbHD+/Hn8999/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\n",
      "text/plain": [
       "<Figure size 1080x288 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = hist_encoding(dummy_enc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "rPZ9lv8zNwUA",
    "outputId": "8325daff-66e9-4449-8fd6-90eb7a66f317"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-0.9210,  0.5911, -0.5127,  ..., -0.9868, -1.1467, -0.2744]],\n",
       "\n",
       "        [[ 0.1399, -0.2607, -1.5574,  ..., -0.0925, -1.2214, -2.4460]],\n",
       "\n",
       "        [[-1.5755, -0.1191, -1.0491,  ..., -1.1097, -1.6662, -0.8982]],\n",
       "\n",
       "        [[ 0.8643,  1.3324,  0.6575,  ..., -0.1761, -1.0183,  0.2611]]],\n",
       "       grad_fn=<NativeLayerNormBackward0>)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "layer_normalizer = nn.LayerNorm(256)\n",
    "dummy_normed = layer_normalizer(dummy_enc)\n",
    "dummy_normed"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 289
    },
    "id": "1Ayl-iuSNwUB",
    "outputId": "2355cd3f-3c29-4af4-e91c-9d4f525a561a"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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pfkjpe6zv/76S6dPnza/74cffrC4mQ7gCMg/+YdzIvtkH86J7DtG9q1uUFSoUEE//fSTpNTZFIcOHVK7du3Mr1+8eDHNDUjux2g0qmPHjjKZTFq9erV2796tmTNnytvb2zxm3rx5iomJUXR0tLZs2SJvb2+FhYXp6tWrVm8HkFKPz65du+rDDz/UgQMHdOLECX3yySeaP3++QkNDVbJkSfn7+2vnzp3666+/dOHCBUmp15V999132rlzp44cOaLx48ff90Y06QkMDNRDDz2k559/Xnv27NEvv/yi4cOHq2jRouYx1atXV0pKit58802dOHFCa9as0aJFi7K07u+//z7ddf/bihUrtGLFCs2fP988lezs2bO6du2apNST2Pz58xUTE6OjR4/qt99+06pVqzRnzhxJ0oMPPqigoCANHTpUv/zyi/bs2aOJEydaPKsesCfk/x/kH86E7P+D7MOZOEP29+zZowMHDhTI7FvdoAgPD9eyZcvUp08fPf744ypdurQ6depkfv3HH39UQECA1RueP3++fH199dZbb6lx48aqUqWKQkNDVaNGDUmpsycWLlyoMWPGqHv37qpVq5YWLlyoa9euac2aNVn4iIDk4eGhkJAQLVq0SF26dFGLFi00bdo09ezZU0uXLpUkTZw4UadPn1bDhg1VvXp1SdL48ePVqFEj9erVS507d1axYsXUq1evLG//zTfflL+/v7p166a+ffuqV69e8vf3N79ep04dzZgxQ2+++aaaN2+u5cuX67///W+W1t2zZ8901/1v27dv182bN/Xoo4+qRo0a5j93H0fUv39/LViwQB9++KFat26tRx55RMuWLVPlypUlpd51eMWKFUpJSdFDDz2koUOHaty4cebZVIC9If//IP9wJmT/H2QfzsQZst+tWzf179+/QGbfYDQaTZkPS71pSFRUlDZu3KiSJUtq4sSJatmypSTp0qVLatq0qYYPH67nn3/eqg03a9ZM7du315kzZ7R161b5+vqqf//+GjRokAwGg06cOKEGDRpoy5YtatSokfl9vXv3VpkyZazqMjmSo0ePKjAw0NZlWOXy5csqVapUvm4zMTExSzN0nJEj7CNbHDv2juxnzhGObVuz931E9tMi+5mz9+PaHtj7PiL76SP/mbP3Y9se2Ps+yu6xY3WDIrfdfaTL8OHD1aNHD+3fv18TJkzQ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7Ap/qD59+jS//PILq1at4tVXXzW8fvHixUqr29HREYALFy6U+NmFCxdo2LBhpXxL+bg39Smah1ZQUEBAQABvv/02/fv35/jx4yxevJhNmzZhYWFRYruiRwueOHGiWIPixIkT5Ofn69GDUumU/bJVVfZFTEH5L1tV53/+/PnExcURHh7OmDFjnrR8kVIp+2Uz9e/+oqsx9BSP0ukxozXcvn37iIiIwNnZmVdeeQXAcOnT/3cTV61aVaIDWnR36f8/gRV1KP9/jOjo6EqrvWXLljzzzDPEx8cXuxzt8uXL7NixA29v70p5BnLRnLqKnqTbtGmDl5cXrVu3Jjs7m4CAALy8vCgoKKBDhw688MILeHl5legQDxgwgCZNmhAbG1vs9c8++wxLS0uGDh36xMciUkTZL19VZV+kqin/5avK/EdFRREdHc2MGTOYMmXKE9cuUhplv3xVlf3bt28/crwvvvgCKHyKnzyarqCoQXbt2sWlS5d4+PAhf/75J/v372fPnj04OjqyceNGwz0ObGxs6N+/P1FRUeTm5uLo6MjBgwc5cOBAsZvSAHTt2pW6deuyYsUK7t27h5WVFc8++yxubm64uroyb948bty4QZMmTUhMTOTGjRuVekyLFy/G19cXHx8fxo8fb3jckKWlJfPnz6+UfTz99NPY2toSGxuLtbU11tbWuLu707FjxzK3O3ToEM2aNTNc5nX48GHDzYIexcrKig8++ICZM2cybtw4fHx8OHDgAJs3b2bOnDnF5gqKPA5l3zhVlX2AHTt2kJycDBR+a3LlyhUiIiKAwjupd+7cuRKOSGoj5d84VZX/hIQEFixYgKurK25uboZvt4sMGjSozDn1IqVR9o1TVdlfu3Yt3377LUOGDMHJyYn09HQSExNJSkpi6NChmuZVBjUoapClS5cChXesbdKkCR07diQ8PJyxY8fSqFGjYuuuW7eOkJAQ1q9fz8OHD+nbty/btm0zPOanSIsWLYiMjOTjjz/mnXfeIS8vj08++YSxY8cSHx9PSEgI0dHR1KlTB29vb77++mvDc5Mrw4ABA/jmm28ICwsjLCyMevXq0adPHxYuXFhpzw82NzcnJiaGDz/8kJkzZ5Kbm8vs2bPLPVEdOXKEHj16GJaPHj1KaGhomdtMnDgRCwsLVq5cyc6dO2nVqhUfffQRwcHBlXIsUjsp+8apyuxv27at2J3L7927x5IlS4DCOblqUIixlH/jVFX+ixqTFy9eZPLkySV+npCQoAaFGEXZN05VZd/Ly4vTp0+zefNmbt26hbm5OW5uboSFhTFp0qRKOZaayiwtLc34u4aIiIiIiIiIiFQC3YNCRERERERERExODQoRERERERERMTk1KERERERERETE5NSgEBERERERERGTU4NCRERERERERExODQoRERERERERMTk1KERERERERETE5NSgEBERERERERGTU4NCRERERERERExODQoRERERERERMbn/AfWR1dwU2qn8AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1080x288 with 4 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = hist_layer_normed(dummy_enc, dummy_normed)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "znS6-K7gNwUB"
   },
   "source": [
    "### Our Seq2Seq Problem"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "arObrQGSNwUB",
    "outputId": "7077532f-a51d-4e2b-b5a3-d11bb74d8912"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[ 1.4636,  2.3663],\n",
       "         [ 1.9806, -0.7564]]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pe = PositionalEncoding(max_len=2, d_model=2)\n",
    "\n",
    "source_seq = torch.tensor([[[ 1.0349,  0.9661], [ 0.8055, -0.9169]]])\n",
    "source_seq_enc = pe(source_seq)\n",
    "source_seq_enc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "yoEKCgfGNwUC",
    "outputId": "6722aa81-390d-41b3-e635-22f3da27e73a"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-1.0000,  1.0000],\n",
       "         [ 1.0000, -1.0000]]], grad_fn=<NativeLayerNormBackward0>)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "norm = nn.LayerNorm(2)\n",
    "norm(source_seq_enc)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "VjctP2zQNwUC"
   },
   "source": [
    "### Projections or Embeddings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "jpaGfMKSNwUD",
    "outputId": "d1bd436e-e56b-4475-c4e6-03bd8f415dee"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-2.0934,  1.5040,  1.8742,  0.0628,  0.3034,  2.0190],\n",
       "         [-0.8853,  2.8213,  0.5911,  2.4193, -2.5230,  0.3599]]],\n",
       "       grad_fn=<AddBackward0>)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch.manual_seed(11)\n",
    "proj_dim = 6\n",
    "linear_proj = nn.Linear(2, proj_dim)\n",
    "pe = PositionalEncoding(2, proj_dim)\n",
    "\n",
    "source_seq_proj = linear_proj(source_seq)\n",
    "source_seq_proj_enc = pe(source_seq_proj)\n",
    "source_seq_proj_enc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "ILNhhrKaNwUD",
    "outputId": "43458dee-98b3-4081-e7be-c33650fda43e"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[[-1.9061,  0.6287,  0.8896, -0.3868, -0.2172,  0.9917],\n",
       "         [-0.7362,  1.2864,  0.0694,  1.0670, -1.6299, -0.0568]]],\n",
       "       grad_fn=<NativeLayerNormBackward0>)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "norm = nn.LayerNorm(proj_dim)\n",
    "norm(source_seq_proj_enc)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "NfRNE7NrNwUD"
   },
   "source": [
    "## The Transformer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "VXck3Bz7NwUD"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/full_transformer.png?raw=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "id": "WKwuPjG8NwUE"
   },
   "outputs": [],
   "source": [
    "class EncoderDecoderTransf(EncoderDecoderSelfAttn):\n",
    "    def __init__(self, encoder, decoder, input_len, target_len, n_features):\n",
    "        super(EncoderDecoderTransf, self).__init__(encoder, decoder, input_len, target_len)\n",
    "        self.n_features = n_features\n",
    "        self.proj = nn.Linear(n_features, encoder.d_model)\n",
    "        self.linear = nn.Linear(encoder.d_model, n_features)\n",
    "            \n",
    "    def encode(self, source_seq, source_mask=None):\n",
    "        # Projection\n",
    "        source_proj = self.proj(source_seq)\n",
    "        encoder_states = self.encoder(source_proj, source_mask)\n",
    "        self.decoder.init_keys(encoder_states)    \n",
    "        \n",
    "    def decode(self, shifted_target_seq, source_mask=None, target_mask=None):\n",
    "        # Projection\n",
    "        target_proj = self.proj(shifted_target_seq)\n",
    "        outputs = self.decoder(target_proj,\n",
    "                               source_mask=source_mask,\n",
    "                               target_mask=target_mask)\n",
    "        # Linear\n",
    "        outputs = self.linear(outputs)\n",
    "        return outputs"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "id": "Q2MZn9BoNwUE"
   },
   "outputs": [],
   "source": [
    "class EncoderDecoderSelfAttn(nn.Module):\n",
    "    def __init__(self, encoder, decoder, input_len, target_len):\n",
    "        super(EncoderDecoderSelfAttn, self).__init__()\n",
    "        self.encoder = encoder\n",
    "        self.decoder = decoder\n",
    "        self.input_len = input_len\n",
    "        self.target_len = target_len\n",
    "        self.trg_masks = self.subsequent_mask(self.target_len)\n",
    "        \n",
    "    @staticmethod\n",
    "    def subsequent_mask(size):\n",
    "        attn_shape = (1, size, size)\n",
    "        subsequence_mask = (1 - torch.triu(torch.ones(attn_shape), diagonal=1))\n",
    "        return subsequent_mask\n",
    "                \n",
    "    def encode(self, source_seq, source_mask):\n",
    "        encoder_states = self.encoder(source_seq, source_mask)\n",
    "        self.decoder.init_keys(encoder_states)\n",
    "        \n",
    "    def decode(self, shifted_target_seq, source_mask=None, target_mask=None):\n",
    "        outputs = self.decoder(shifted_target_seq, \n",
    "                               source_mask=source_mask,\n",
    "                               target_mask=target_mask)\n",
    "        return outputs\n",
    "    \n",
    "    def predict(self, source_seq, source_mask):\n",
    "        inputs = source_seq[:, -1:]\n",
    "        for i in range(self.target_len):\n",
    "            out = self.decode(inputs, source_mask, self.trg_masks[:, :i+1, :i+1])\n",
    "            out = torch.cat([inputs, out[:, -1:, :]], dim=-2)\n",
    "            inputs = out.detach()\n",
    "        outputs = inputs[:, 1:, :]\n",
    "        return outputs\n",
    "                \n",
    "    def forward(self, X, source_mask=None):\n",
    "        self.trg_masks = self.trg_masks.type_as(X).bool()\n",
    "        source_seq = X[:, :self.input_len, :]\n",
    "\n",
    "        self.encode(source_seq, source_mask)\n",
    "        if self.training:\n",
    "            shifted_target_seq = X[:, self.input_len-1:-1, :]\n",
    "            outputs = self.decode(shifted_target_seq, source_mask, self.trg_masks)\n",
    "        else:\n",
    "            outputs = self.predict(source_seq, source_mask)\n",
    "            \n",
    "        return outputs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "UoU52fKfNwUF"
   },
   "source": [
    "### Data Preparation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {
    "id": "9E19-2TjNwUF"
   },
   "outputs": [],
   "source": [
    "# Generating training data\n",
    "points, directions = generate_sequences(n=256, seed=13)\n",
    "full_train = torch.as_tensor(points).float()\n",
    "target_train = full_train[:, 2:]\n",
    "# Generating test data\n",
    "test_points, test_directions = generate_sequences(seed=17)\n",
    "full_test = torch.as_tensor(test_points).float()\n",
    "source_test = full_test[:, :2]\n",
    "target_test = full_test[:, 2:]\n",
    "# Datasets and data loaders\n",
    "train_data = TensorDataset(full_train, target_train)\n",
    "test_data = TensorDataset(source_test, target_test)\n",
    "generator = torch.Generator()\n",
    "train_loader = DataLoader(train_data, batch_size=16, shuffle=True, generator=generator)\n",
    "test_loader = DataLoader(test_data, batch_size=16)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 217
    },
    "id": "sYSUJjm9NwUF",
    "outputId": "a1d960c4-821b-47d4-fdaf-0285406c92d2"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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pkGLSEmMKeUxpqyFMaU8xpS1MKaUx5iyFsaU8swSU0xKEBEREREREZEmLLX6BhERERERERHpB5MSRERERERERKQJJiWIiIiIiIiISBNMShARERERERGRJpiUICIiIiIiIiJNMClBRERERERERJpgUoKIiIiIiIiINMGkBBERERERERFpgkkJIiIiIiIiItIEkxIGc/ToUeTm5mLKlCkht//zn/9Ebm4uHnzwQY1aRmRMjCkieTGmiOTFmCKSF2NKfxyPP/74k1o3gqTr1q0bTp06hTVr1uCOO+5ARkYGqqqqMG7cOBQVFWHlypVwOBxaN5PIMBhTRPJiTBHJizFFJC/GlP7YPB6PoHUjKD4nTpxAUVERfvSjH2HhwoW48cYbIQgCPvroI7jdbq2bR2Q4jCkieTGmiOTFmCKSF2NKX1gpYUAulwv19fV44403sHXrVhw5cgRlZWXIzc3VumlEhsSYIpIXY4pIXowpInkxpvSFc0oY1EMPPQS/34+dO3dizZo1yM/PD7m/trYW48ePR+/evXHFFVdg48aN2jSUyCAYU0TyYkwRyYsxRSQvxpR+OLVuAHXO888/j0AgAL/fj/T09A73P/LII8jKysLXX3+NzZs347777sO//vUv9OzZU4PWEukfY4pIXowpInkxpojkxZjSD1ZKGNBLL72E5cuX4+mnn0ZaWhoWL14ccn9DQwPWr1+POXPmIDU1FTfffDOGDh2K9evXa9RiIn1jTBHJizFFJC/GFJG8GFP6wqSEwWzYsAFz587Fo48+imnTpuGBBx7A+++/j4qKiuA2Bw4cQFpaGvr06RO87bLLLkN5ebkWTSbSNcYUkbwYU0TyYkwRyYsxpT9MShjIl19+ifvvvx/jxo3Dz3/+cwDAjBkzkJqaiqeffjq43fnz59GtW7eQx3bv3h3nz59Xtb1EeseYIpIXY4pIXowpInkxpvSJSQmDOHLkCCZMmIDBgwdj2bJlsNlsAICMjAzcd999WLduHfbu3QsASEtLw7lz50Ief+7cOaSlpanebiK9YkwRyYsxRSQvxhSRvBhT+mXzeDyC1o0geTU0NODiiy/Grl270Lt3bwBASUkJbr/9dkyePFnbxhEZEGOKSF6MKSJ5MaaI5MWYUhcrJUzI5XLhlltuwcKFC9HY2IgPP/wQu3btwve//32tm0ZkSIwpInkxpojkxZgikhdjSl1cEtSkfvWrX2H69Ono378/cnNzsWLFCi5fQ9QFjCkieTGmiOTFmCKSF2NKPRy+QURERERERESa4PANIiIiIiIiItIEkxJEREREREREpAkmJYiIiIiIiIhIE0xKEBEREREREZEmmJQgIiIiIiIiIk0wKUFEREREREREmmBSgoiIiIiIiIg0waQEEREREREREWni/wOUXOckeCzhpgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1080x216 with 5 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plot_data(points, directions, n_rows=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "xJguxfwmNwUG"
   },
   "source": [
    "### Model Configuration & Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "id": "DF56cOibNwUG"
   },
   "outputs": [],
   "source": [
    "torch.manual_seed(42)\n",
    "# Layers\n",
    "enclayer = EncoderLayer(n_heads=3, d_model=6, ff_units=10, dropout=0.1)\n",
    "declayer = DecoderLayer(n_heads=3, d_model=6, ff_units=10, dropout=0.1)\n",
    "# Encoder and Decoder\n",
    "enctransf = EncoderTransf(enclayer, n_layers=2)\n",
    "dectransf = DecoderTransf(declayer, n_layers=2)\n",
    "# Transformer\n",
    "model_transf = EncoderDecoderTransf(enctransf, dectransf, input_len=2, target_len=2, n_features=2)\n",
    "loss = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(model_transf.parameters(), lr=0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {
    "id": "V0IgwQWyNwUG"
   },
   "outputs": [],
   "source": [
    "for p in model_transf.parameters():\n",
    "    if p.dim() > 1:\n",
    "        nn.init.xavier_uniform_(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "id": "p4LkgTLCNwUH"
   },
   "outputs": [],
   "source": [
    "sbs_seq_transf = StepByStep(model_transf, loss, optimizer)\n",
    "sbs_seq_transf.set_loaders(train_loader, test_loader)\n",
    "sbs_seq_transf.train(50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 289
    },
    "id": "lpCLDBgFNwUH",
    "outputId": "000707d5-767a-4bbf-8a9a-46fc68d487f3"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAEQCAYAAAC++cJdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3hTZRvH8W922rSlFIGy9ypTQJZskClWwcpWQWQvQRRlbwFBNihDgaJsZYmAgGxwMEXFIkMQUVahTZumSc77R18Dh7bQnbbcn+vqBXnOuumThF9OnvMcTXh4uIIQQgghhBBPCK2nCxBCCCGEECIjSQAWQgghhBBPFAnAQgghhBDiiSIBWAghhBBCPFEkAAshhBBCiCeKBGAhhBBCCPFEkQAshBBCCCGeKBKAhRBCCCHEE0UCsAeFhYV5ugSRxqRPsx/p0+xH+jT7kT7NftK7TyUACyGEEEKIJ4oEYCGEEEII8USRACyEEEIIIZ4oEoCFEEIIIcQTRe/pAoQQQgiR/TgcDqxWa4Ycy2w2c/fu3Qw5lsgYSelTi8WCXp+yKCsB2MNcLtDKeXghhBDZiMPhICIiAn9/fzQaTbofz2QyYTab0/04IuM8rk8VRSE8PBxfX98UhWCJXh5it8OnnwbStKmF2FhPVyOEEEKkHavVmmHhVzyZNBoN/v7+Kf6WQQKwB+zbp+PZZ31YsKAgx4/rWbTI6OmShBBCiDQl4Vekt9Q8xyQAe8CaNUbCwnTuxx98YOavv+SNQgghhBAiI0gA9oBx42zkyKG4H1utGkaMkLFLQgghhBAZQQKwB+TOrTB6tE3V9tVXRvbskWsShRBCiOykT58+tG/fPlnbtG7dmmHDhqVTRQKegAD8zTffUL16dapWrcqKFSs8XY7b66/bKVdOPXD7nXfMxMR4qCAhhBDiCebv7//Inz59+qRovx988AEff/xxsrYJDQ1l9OjRKTpeckyZMoXatWun+3Eyo2x9ytHhcDBixAi2bNmCn58fDRs25PnnnycgIMDTpaHTwbvv/km3bmVRlLjxv+fP65g3z8TQoZKChRBCiIx07tw599937NjBwIEDVW0PT8kVGxuLwWB47H5z5MiR7Fpy5syZ7G1E8mTrM8A//fQTZcuWJX/+/Pj4+NC0aVP27Nnj6bLcype38tprdlXbhx+auHxZLogTQgghMlLevHndP/+F1v8e22w2ihQpwvr162nTpg2BgYF8+umn3L59mzfeeIOgoCACAwOpVasWoaGhqv0+PASidevWDB06lPHjx1O8eHFKlizJyJEjcblcqnUeHAJRsWJFpk+fzuDBgylUqBBBQUHMmTNHdZzz58/TqlUr8ubNS/Xq1dm5cycFChRg1apVKf6dnD17luDgYAIDAylatCh9+vRR3Zzi7NmzvPDCCxQqVIgCBQrw7LPPsn//fiDuA8I777xD2bJlyZMnD+XLl2fs2LEpriWtZeoAfOjQITp06EC5cuXw9/dPsBOXLFlCpUqVyJs3Lw0aNODw4cPuZdevXyd//vzux/nz5+fvv//OkNqTavToGAIC7j/po6M1vPeelwcrEkIIIdKev3+OdPsJDMwbry09jBs3jh49enD06FFat26NzWajcuXKrF69mqNHj9K7d2/eeust9u3b98j9rFu3Dp1Ox86dO5k+fToLFy5k48aNj9xmwYIFBAUFsW/fPgYNGsTo0aP5/vvvAXC5XHTp0gW9Xs+uXbtYsGABU6dOJSYV4yqtVivt2rXDYrGwe/duQkND+f777+nfv797nTfffJPAwEB2797NgQMHGD58uPtM+aJFi9i2bRtLly7lp59+YtmyZZQsWTLF9aS1TB2ArVYrQUFBfPDBB3h5xQ+FGzduZPjw4QwdOpT9+/dTo0YNQkJCuHLligeqTZmAAIWxY9UXxH39tYEdO7L16BQhhBAiy+nZsyfBwcEULVqUAgUKkD9/fgYOHEilSpUoWrQor7/+Om3atGH9+vWP3E+ZMmUYMWIEJUuW5KWXXqJevXqPDc2NGzemZ8+eFC9enF69elG8eHH3Nnv37iUsLIxFixZRqVIlatSoweTJk3E4HCn+t65fv56oqCg+/vhjypcvT926dZk1axZbtmzhwoULAFy5coWGDRtSunRpihcvTps2bahRo4Z7WYkSJahTpw6FChWiZs2adOnSJcX1pLVMHYCbNWvG6NGjCQ4ORpvA/YLnz59Pp06deO211yhTpgzTp08nb968LFu2DIDAwECuXbvmXv/atWsEBgZmWP1J1aVLLM88o36SvvuumehoDxUkhBBCiHiefvpp1WOn08mHH35InTp1KFasGAUKFGDLli1cvXr1kfspX7686nFgYCA3btxI8Ta///47+fLl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\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = sbs_seq_transf.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "vNfDOfCUNwUH",
    "outputId": "e4dad5dc-34a6-4fa7-b29a-7fef5ac59414"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.0158, device='cuda:0', grad_fn=<MseLossBackward0>)"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch.manual_seed(11)\n",
    "x, y = next(iter(train_loader))\n",
    "device = sbs_seq_transf.device\n",
    "# Training\n",
    "model_transf.train()\n",
    "loss(model_transf(x.to(device)), y.to(device))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "StSL5adGNwUH",
    "outputId": "dcc0f2b7-f89e-4142-975e-49c13dafbefb"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.0091, device='cuda:0')"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Validation\n",
    "model_transf.eval()\n",
    "loss(model_transf(x.to(device)), y.to(device))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "6iANDCCINwUH"
   },
   "source": [
    "### Visualizing Predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 450
    },
    "id": "CQZb7OglNwUI",
    "outputId": "330ec4cb-de59-4ac4-9610-74c5683250a4"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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fA7zOa6ECeQmYN68eXjooYfwzTff4Pfff8ePP/6IsrIyBAUFoUePHnj66acxefJkq+to164d0tPT8fHHH2PLli3Yu3cvfH19ce+99+If//iH2VkxX3vtNfTr1w//+te/sH37dpSUlCAkJAQ9e/bEtGnTbPZ74sSJ8PT0xIwZMzB27FisW7cOUVFRAKrG5ImOjjYa90ogBIy8vDyLMwZXFxMTgzlz5uD3339HWloaCgsLERwcjM6dO+P9999HUlKSUftBgwZh165d+PLLL7Fz507s378fcrkcLVq0QFxcHJKTk43GECKqDUe/w2+++SZ69eqFr7/+Gj///DMqKirQrl07zJ07Fy+88AL8/f2N1t+5c2ekpqbinXfewY4dOyCVShETE4PU1FTk5OQ45cAKAP71r3/htddew549e7B9+3bodDrMmzcP9957LwDg4YcfRo8ePbB06VJkZGQgLS0NXl5eaNmyJUaOHInExESn9AMAPDw8sHjxYkydOhUrVqzA7t27cejQIajVajRv3hy9e/fG66+/jgkTJthcV2xsLNLT07Fo0SKkp6dj586dCAwMRHx8PF566SWT2b8lEgmWLVuG4cOHY8WKFVi/fj0qKioQEhKCe+65Bw899JDN53zxxRfh7e2NV199FQkJCVi3bh1atmwJAOjWrRtCQ0Nx8+ZNk/g4cOBAeHh4oLKy0u74OHz4cOTm5mLPnj3YsmULiouLERoairi4OMycOdPk4LM+/49UNxhzGHOqY8yhusSYw5hTHWMO0V+Yz7GN+Zz6ISkqKtI3dCeIiIiIiIiIiIiIyPVwDGQiIiIiIiIiIiIiMosJZCIiIiIiIiIiIiIyiwlkIiIiIiIiIiIiIjKLCWQiIiIiIiIiIiIiMosJZCIiIiIiIiIiIiIyiwlkIiIiIiIiIiIiIjKLCWQiIiIiIiIiIiIiMosJ5HqWnZ3d0F1oNPheOYbvF5nDz4X9+F45hu8XmcPPhf34XjmG7xeZw8+F/fheOYbvF5nDz4X9+F45pjG8X0wgExEREREREREREZFZTCATERERERERERERkVlMIBMRERERERERERGRWUwgExEREREREREREZFZTCATERERERERERERkVlMIBMRERERERERERGRWUwgExEREREREREREZFZ8obuABHVH41Gg9TUVGzfvh15eXnQaDSQy+Vo1aoV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srtVq1bhs88+Q3x8PLRaLd577z2T5fn5+di6dSteffVVeHh4YOTIkejWrRu2bt1qpxYTkSNj5hCRLTFziMiWmDlEZEvMnMaDBWSyq23btuG1117DggULMGfOHDz99NPYtGkTzp8/L65z6dIlaLVatG7dWryvS5cuOHv2rD2aTEQOjJlDRLbEzCEiW2LmEJEtMXMaFxaQyW5OnDiBP//5zxg/fjwWLVoEAHjmmWfg4eGB+Ph4cb2CggJ4eXmZPNbb2xsFBQU2bS8ROTZmDhHZEjOHiGyJmUNEtsTMaXxYQCa7uHbtGqZOnYrw8HB88sknUCgUAICmTZviqaeewubNm3HmzBkAgFarxf37900ef//+fWi1Wpu3m4gcEzOHiGyJmUNEtsTMISJbYuY0Toq8vDyDvRtBZEl+fj5CQkJw8uRJtGrVCgAwduxYTJ48GTNnzrRv44jI6TBziMiWmDlEZEvMHCKyJWaO82APZGrwPD09MWrUKCxduhSFhYXYuXMnTp48idGjR9u7aUTkhJg5RGRLzBwisiVmDhHZEjPHeajs3QAiOT744APMnTsXoaGhCAgIwBdffAE/Pz97N4uInBQzh4hsiZlDRLbEzCEiW2LmOAcOYUFEREREREREREREkjiEBRERERERERERERFJYgGZiIiIiIiIiIiIiCSxgExEREREREREREREklhAJiIiIiIiIiIiIiJJLCATERERERERERERkSQWkImIiIiIiIiIiIhIEgvIRERERERERERERCSJBWQiIiIiIiIiIiIiksQCMhERERERERERERFJYgGZiIiIiIiIiIiIiCSxgExEREREREREREREklhAJiIiIiIiIiIiIiJJLCATERERERERERERkSQWkImIiIiIiIiIiIhIEgvIRERERERERERERCSJBWQiIiIiIiIiIiIiksQCMpnIyMiAj48P5s6da7PnTElJsflz+vj4YPTo0TZ7PiJyfEJWvfvuuzZ7znXr1tn0Oe2xDyAiacwcIrIlZg4R2RIzx/GwgNxIXLhwAS+//DL69u2LNm3awM/PDx07dsTDDz+ML7/8EgUFBfZuIhFZ4OifYWHn2dBO3KSmpuKvf/0revbsicDAQPj7+yMiIgLTpk3Dd999h7KyMns3kcgumDn1g5lDJI2ZUz+YOUTSmDn1g5nj3FT2bgDVv/fffx/x8fHQ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dnaVfOzbty/UajXKyspk5+PQoUORmZmJAwcOYMeOHbh37x78/f0RExODOXPmVDkQtOX/I9UPZg4zpzJmDtUnZg4zpzJmDtUnZg4zpzJmjjyKvLw8g82ejYiIiIiIiIiIiIgcBsdAJiIiIiIiIiIiIiJJLCATERERERERERERkSQWkImIiIiIiIiIiIhIEgvIRERERERERERERCSJBWQiIiIiIiIiIiIiksQCMhERERERERERERFJYgHZxi5cuGDvJjgMvlY1w9eLpPB9IR9fq5rh60VS+L6Qj69VzfD1Iil8X8jH16pm+HqRFL4v5ONrVTOO8HqxgExEREREREREREREklhAJiIiIiIiIiIiIiJJLCATERERERERERERkSQWkImIiIiIiIiIiIhIEgvIRERERERERERERCSJBWQiIiIiIiIiIiIiksQCMhERERERERERERFJYgGZiIiIiIiIiIiIiCSxgExEREREREREREREklhAJiIiIiIiIiIiIiJJKns3gIiIiIiISIpOp0NCQgI2btyIgoIC6HQ6qFQqtGzZEg899BDGjRsHlYpfaYiIiIjqE4+2iIiIiIioQSkvL8e7776LrVu34uLFiygrK6uyzsaNG7Fs2TKMHj0ar7zyCpRKpR1aSkREROT8WEAmIiIiIqIGIzMzE08++SSOHz8OnU5ndr3S0lKcPXsWFy5cQHJyMtasWYPAwEAbtpSIiIioceAYyERERERE1CBkZmZi8uTJOHLkiMXisTGdTocjR45g8uTJyMzMrOcWEhERETU+LCATEREREZHdlZeXY+bMmTh//nyVZV9//TWuX7+Ou3fv4vz585g1a1aVdc6fP4+ZM2eivLzcFs0lIiel0+mwa9cuzJ07FxMmTMCYMWMwYcIEzJ07F5s2bZJ9couIyJlwCAsiIiIiIrK7d999FydOnDC7bNasWSgtLUVYWBiSkpJw/PhxpKammqx34sQJxMfHY9GiRbZoMhE5EeOx1y9cuCBZKObY60TUWLGATERERES1otPpkJCQgF27diErKwv37t2Dt7c3WrZsiYceegjjxo2DSsXDTaqeTqfDTz/9ZLZn35kzZ8TbBoMBBoMBoaGhVQrIwnZefvllvveISLb09HRMmjQJaWlpMBgMZtfj2OtE1FjxqIqIiIiIasS4l9bFixdRVlZWZZ3vvvsOAQEBmDp1Kl599VX20iKzhKErzp07Z3G9lStXYubMmfDw8EBqaiq2bdsmud6lS5eQkJCASZMm1UdziciJlJeX49VXX8WaNWtQWloq+3HGY69v3LiRRWQicnocA5mIiIiIZMvMzERsbCxWrFiBs2fPShaPAUCv1+P69etYvnw5unTpgitXrti4peQIhPfT1q1bq1332WefhZeXF/r3749NmzahpKREcr3S0lLs3r3b2k0lIieTmZmJESNG4NNPP7VYPG7fvj2Kiorw9ddfV1nGsdcbn+LiYixcuBCRkZEICQlBmzZtEBISgsjISCxcuBDFxcX2biJRvWABmcjBmNthTZgwgTssIiKqV5mZmZg8eTKOHDlSo0mEsrKyEBMTgyNHjtRj68jRZGZmYtKkSThy5IjFS8aN6fV67Nu3D4GBgZg7d67Z9bKysqzVTCJyQsL+7OjRo9Wuu3LlSov7L2HsdXJupaWlmD17NoKDg7F69Wqkp6cjNzcX9+7dQ25uLtLT07F69WoEBwcjNja2Rj3aiRwBh7AgchClpaUYN24cjh8/LtnjJjc3F6tXr8aaNWsQFRWFhIQEaDQaO7SU7M14TNLLly9DrVZDpVJxTFIiqhNhmIHz58+bXad9+/Y4ffo0/vvf/+KJJ54wWVZcXIyxY8fi0KFDCA4Oru/mkhXp9XqUlZWhtLQUOp0OpaWlJrfLysrE5XJvl5SU4IsvvsD169cln/Prr7/G0KFDodVqcePGDbz//vv44osvxOUqlQqhoaFm22yuZzwRUU32Z0eOHEFWVhb279+P9u3bS67Lsded35EjRzBhwgQUFBRUu25JSQkOHjyIkJAQbN68GT179rRBC4nqH9ONyAFwh0WWCAXjnTt34uDBg8jOzkZRUZHkupw5mohq691338WJEycsriP00vLy8kJRUVGVQnJxcTFiY2Px66+/Mn+szGAwQKfTyS7k1qTgW5Pe5nLt3bvXYi/hd999F7NmzUJpaSn69OmDbdu24dy5czhw4ACGDRuGqVOnYurUqWYfr1arrd5mInIOcvdnqamp6N69O6ZOnYrZs2dbXJ9jrzuvI0eOYPTo0TXuUVxQUIDRo0dj69at/E5OToEFZKIGjjssMsd4EqsLFy7I+oLPmaOJqDZ0Oh22bt1qMWceffRR5OXlYf/+/Xj66afNXu6blZWFpUuX4vXXX6+v5jZo5eXlKCsrQ35+Pu7cuVOlN29NbxsXeuUOA1EbGo0GarVa/LH0e3W3XVxcsHnzZovtPXPmjHhbr9fD3d0dO3fuRHl5OTIyMvC3v/0NW7ZsMfv4li1bWvXvJ9srLi5GXFwcduzYgbt376K8vBxKpRJNmjRBbGws4uLi7N1EckA12Z95e3vj4sWLuHbtWrXbFcZeZwHZuZSWlmLChAmS38U9PT1x9OhRhIaGQqlUori4GEuXLsWSJUuqPD4tLY1XB5PDYwGZqAHjDovMyczMxJNPPonjx4/XqmcYZ44moppISEjAxYsXzS738vLCW2+9hQcffBArVqxAWVkZ9uzZY/Zy32+//RavvPJKg73U12AwVBmyoTbDNEjdFiZaunPnDpo2bWrVdiuVyhoVcuXeVqvVUCgUVmvnpk2bcPny5WrXW7lyJWbOnAkPDw+kpqZi4MCBsq7G0mg0GDZsmDWaSnZQk2HbOnXqhF27dvE4l0wYn2wrLS1FSUmJOHTOjh078Pvvv5t9rLA/mzdvHr755psaTcjJsdedz7hx48zud9zc3JCVlYVZs2bhwIEDeOONN/DWW28hMTER+/btE9crKCjA+PHjsX37dls1m6heNMyjdiICwB0WSRMm/bA0bpugujEkhZmjd+7cycvJicisXbt2WRxT9u2338YXX3yBe/fuYciQIUhOTra4vRs3btT5Ul+DwSD25q1LUdfcsvqiUCig0Wjg7u4OX19faDQaqFQqaDSaOt1Wq9UOk+PVvZ8Ezz77LJ577jn06dMHgwcPliwmSgkNDcW4cePq2kyyg5oO23by5EkO2+YEhJN2JSUlkkVfqfuEf6XuE07USdm6davF5cL+LDw8HD4+Ppg4cSKysrLg6ekJpVKJ8PBw9OjRQ/KxHHvduRQXF+P48eNml9+6dQtDhgwRf4+Li8NLL72E8ePHm3wfB4DU1FQUFxfDzc2t3tpLjsf4Sps7d+4AQJUrbRrSe6bBFJD37duHjz76CCdPnkRWVhZWrlyJadOmWXzMb7/9hhdffBGpqanw9fXFzJkz8dJLL1m1hwSRvXCHVb8cNXOqm/SjcsH4m2++EceQDAsLQ1JSEo4fP47U1FTxMcLM0YsWLbLVn0FOoLi4GAsXLrR4aTEz5w+OmjkCS72qunfvjmHDhiEqKgrLli1DamoqCgsLLW5Pr9fjhx9+QEREBNLT05GSkoLy8nLodDro9XqT271794ZCoYBOp8OJEydw69YtlJeXo7y83GQIhCZNmog9nktLS3H69Gmzz9++fXs0adIEAHD9+nXcuHGjyjpKpRJubm6IiYkRC7RHjx4V3+tKpRIqlUq8HR4eji5dukCj0SA7OxuHDh0yWS78uLi4YNq0abh27Ro6dOiA//3vf7h69SrKysqqFM3atGmDgQMHAqg4Ifzdd9+Z/ZuGDRuGNm3aAKjY7588eVJyPQ8PDzz66KPi7xs2bDAZN9/4/RUZGYnIyEgAwJUrV/Dzzz+bff4pU6bAw8MDALBnzx5kZmZKrhcUFFSjXnp6vR779u3D9OnTMXfuXHz00UcW11epVBgzZkyD7d1uK46YORy2zbGUl5fLKvTKKf5aawge4cSiwWAQ81elUsHFxQUuLi4IDAzE1q1bzT7eeH+mUqkQGBiItm3bYt68eViwYAHatm2LuXPnmn18Yx573REzpzpxcXGyT1wCQEREBNzc3CT3lSUlJYiLi0N8fLw1m0gOqiZX2kRFRSEhIaFBXGnTYI6sCgoKEB4ejqlTp2LOnDnVrn/v3j1MnDgRffv2xc8//4wLFy7g2WefhYeHB5577jkbtJiofnGHVb8cNXOqm/TDeNIhoWC8detWpKamwmAwwGAwIDQ01KSAzJmjqSaEA55jx45J9rRpqAc89uaomSOwNFTO4MGD0bZtW1y/fh1NmjRBSUkJlEol8vLysGfPHrOPO336NDZt2oTbt2/j7NmzZtdr0aKF+B66ffs28vLyxGUKhUIsymo0GgQEBECtVkOn0+Hy5ctwcXExKdwKtwcOHIjQ0FBoNBrxpJrxOi4uLlAoFPD09MQzzzwjPt+9e/eQn58v2c62bduKxVa1Wg29Xm+2EKbX68XbeXl5yM7OllxPKHIDFcWamzdvmn2djJ8rPz9fsigOVAyBZSwnJ8fs32Q8BElJSYnFwq/x33T79m1cv35dcj2tVluroZdUKhVCQ0OrXS8qKgoLFy6s8fadjaNljqVh27777juMHj0aHh4euHTpEjp06GD28Ry2zTyDwWAyrINQ1JW6T05BWO7n2GAwiCcGhWIuUHEiuqioCHq9Hnq9XsxfhUIBNzc3dOjQQbzS4tSpUyYFZuMCY1RUFHr27AlXV1ekpaVh27Zt4nNUzuGRI0dizZo1Ztsq7M+uXLkCAGKv43bt2iEhIQHFxcW4deuW2cc35rHXHS1z5NixY4fsdd3c3JCcnIyzZ8+afdzOnTv5fZxqfKXNwYMHG8yVNg2mUjB8+HAMHz4cAEwO1M35/vvvUVRUhE8++QTu7u4IDw/H77//jlWrVmHevHkN5qwVUW1xh1W/HDFz5Ez6YTzpkFAwXrp0KQYMGCCOIblt27Yqj+PM0SSHIx/w2JsjZo4xSyeX/vWvf2HDhg3485//jFdeeQUKhQIKhQJeXl6YPHmy2ct91Wo1OnbsCABiL1/jMXyFoRmaNWsmFhFKSkpgMBjEMXqNh2xQq9Xw9vYGUFFsHTt2rNk2e3l5iUUmf39/sZdvZZVf58cff9ykUGpM6H0LVPQcnjVrltnnd3d3F28PHz7c7AljV1dX8bZWq8VTTz1ldpvGxeaoqCjxta1MKKwIpkyZYvZvMi42BwYGYsaMGWaf3/hvGjp0KPr16ye5npubG7755huz2wEAPz8/PPjgg/jpp59QVFSEYcOGYerUqZg6darFx4WFhWHNmjUOM5RHfXK0zLE0bFtaWhr++c9/Yty4cSaficqccdg2oQBqrtBbk+JvVlYWfH19xW0bDAbxSg/hp7y8XLzt4+Mj5sWtW7dQVFRkstxgMMDFxQU+Pj4ICwuDq6sr9Ho9Dh06VOX9IvQGHjVqFDp06AC1Wo3U1FQcO3ZMPLFn/BhPT0+T3qtXrlwxe6LL29sbLVq0AFCRg+7u7uI+RBjDXaVSifsxOfszgXGvY0uFY4Bjrzta5shx9+5dWeu5uLjg3LlzKC8vNzu8CQBkZ2djx44dVd6fwhBUxu9X42XC+9eRhqoiaY5+pU2DKSDX1OHDh9GnT58qB6vvvPMOMjIy0LZtW/s1jqiODAaDSQ8rS+TusORuj6Q1hMypbhIrQeVJhyZPnoyioiKLY0hy5miqjqMf8DiahpA5xiz1qioqKkJRURGWL1+Ozz77TPzCnZ6ebvFy38DAQEyePLle2qtUKtGsWTNZ62q1Wmi1Wlnryt2mq6sr/P39Za3r4+Mjaz2lUikWSarj5eUFLy8vWevK3aa7u7vJ+9GS6l6n6nrpGQwGzJ07F6tXr4aLiwsyMjLwt7/9DVu2bJFcX6FQoEePHli7di0nha0le2ZOdcO2CT3KBwwYgICAAIvbsvewbUJR1lKR11Lxt7i4uErPXKBqb13jQi4Ak/f9pUuXUFJSUqUwnJ+fj44dO6J9+/bQaDTIy8vD2bNnqwzHI/yMHz8eTZs2hUajwZ49e3DlyhWxB7FxT+KQkBA89thjAIDCwkLJKxWEQlhISIj4XsrNzUV+fr5kAa3y/9+IESPEk4fGxbTK67Zr1w7z58+3+H8kZ38myM/Pr7bXsYBjr9dMQzvOkWJprGxj586dg7e3N9q1a4fi4mKz65WVlVnMOjlcXFwkC83GnwupArTUZ8dSEbvySR2qO2e40sZhC8jZ2dlo1aqVyX1+fn7iMnOBc+HChfpuWrUaQhschTO+VsIYh4WFhSgsLLR4W46a7LDq+/WUCjpn0RAyZ+PGjbWedEjOGJIHDx7Ehx9+KB5cSI3xaTyenLllwm3j3yv3eGuonDFzrEEYtkLqgMfT0xNHjx5FaGgolEoliouLsXTpUixZsqTK43fv3m3VAx5mTlX19R7u2rUrNmzYYHGMSuGL94svvggAWLx4scUv3lqtttF/5hrr39+1a1f897//NbtPu3XrFgYPHix7e4MHD8a7776LoqKien1NmTlVWeP1Xr58eY2GbbOkpKQEf/vb3/DCCy/IfoxerzeZVFNqos2SkhIUFhaaFHmFom9JSQk8PDzEST1zc3NNir3GP25ubmjdujWAiivLzp07Z7LcOGNDQkLQrFkzqFQq5OTk4Nq1a5LD8ri6uiI0NFQs/Ny8ebPKsD3C7e7du6N3794AKsZ/v3//vskxm3BbpVLB09MTarUaBoMBgYGB8PT0lFzPOMv1ej2GDRtmsty4EGUwGMR1XV1d8cADD5j9fzF+bwlXtgjj39fl/VJd/hh78803ZW1TpVKhb9++SEtLq3W7pDBzqmpo+81ff/0VAQEBaN++fbUdttRqNTp37gydTlflR5j7obpl1hgrXA6FQmE2Gyp/vi0tS09PN7u8cj44u9mzZ1vlSpvhw4fjs88+q5c2Vpc5DltAri17h/CFCxfs3gZH4WivlU6nQ35+fpWf+/fvm/xuqcgLVByAeHt7Q6lUVntgU9MdliO9ns7Cmq+53JMKgPlJhyyNIXn79m38/PPPUCgU4mQjLi4uCA4ORtOmTcV1srOzTdYRbiuVSnECJ6BiXE1hTDvjM9wajQZarRZeXl5QqVRQKBQwGAxwc3MTlxuf/TY+ay6cGTc+6DD+vfJPTQ5IHC1zbCk2NtakR44xNzc3ZGVlYdasWThw4ADeeOMNvPXWW0hMTDSZ0LOoqAgLFixwqkuLG6L6eg+HhITg448/NjuurRRLX7zVajUmTZrUqD9zjTlzQkJC8PXXX1sc+1quzp074/vvv+cY/nZijffwwYMHrdCSPyQlJWHEiBFir12h4FtcXIyysjK0adNG7PV75swZ5OfnV+nVq9fr0aJFC/G4Ji8vD7/++qvZ54yOjhaHfLl9+zby8/NNevMKQ+60aNECw4cPF3//z3/+Y7KeSqWCq6sr3NzcEBsbiy5dukChUODcuXM4ceKEZC9CtVqN/v37i23p1KkT9Hp9lR6FV65cQUREhFic6NChAwYNGiTrNXWmrLJm/giioqLw/vvvc3gBG7Dle7Fp06a4d++e2eV9+vRBREQEDAaDybwDwjAclfn7+2PChAm1bo8wnrhwYkun05mc6BJOYlVeJtyu/K/UbeF3qd7XwpA6cq9GvHPnjvgd0pLqekpX7i1d3XAf5rZhz0J1cXExzp07Z3Z5Ta60OXv2LIKCguxypY3DHmn5+/sjJyfH5D7hd7mXDBLJodfrqy0K5+fnVzvjvECpVMLT0xOenp7iJabC78J9np6e2LBhAzIyMsxup6Y7LLmXyJK0hpA5NZ10yM/PDx07dhSLuNWNIenp6YmwsLAq49v16NEDgYGBKC8vx6lTp5CbmysuNx47z8XFBX5+fuKBx8mTJ1FQUCA5tmbr1q0REhICQPpLmXGBunv37uIOMj09HXfv3pUsYGu1WvESTr1ej8zMzCoHDsJP8+bNxQK2cLB0584dBAcHiwVsV1dX8ae6QrUzn0mv7tLiW7duYciQIeLvcXFxeOmllzB+/HiTAjJg/0uLHUlDyBxjKpUKU6dOxfLly62yvfbt2/NS30ZMpVJh9OjRuHDhQq0m1DPezpgxY1g8tgJ7Zo7ccUblunPnDj7//HPJZQqFwuRKmFu3bqGwsLDK8A0ajQZ+fn5iwfX+/fsoKSmBq6srNBoN3NzcTH6GDRsGf39/aDQa/P7778jOzpa8VFyr1SIoKAhARTEoPDy8yvimUscQnTp1QqdOnWT9/caTXxrLzc212LOtsbBW/gg49nrtNLTjHCmxsbFYvXq12eUHDhyo0TH/iBEj6tQeYeJgpVJZ78fS5grVxkXm6orYV69eRfPmzS0WsY0fX9/kDOUht4htaRtSV97GxcVZ9UqbuLg4u8xv5bBHWzExMYiLizP5IpqYmIiWLVsiODjYzq0jR2AwGFBYWGixKHz//n0UFBTIulREKGBVLggbF4U9PT3h7u4ua0czcuTIBrXDauwaQuZU9wW58qRDgwcPxqBBgxATE4Pp06dXO4bkgAED8Oabb4qXSgmXS3l7e4vjk3Xt2hUPPfSQuEwoIut0Ori4uKBXr17i9rp06YL8/HzxwEA4Y11WVoYOHTogPDwcZWVluHLlClxdXcUZvcvKykx6AAkzawu9/IuLi8VlZWVl4tl4tVoNT09P6HQ6FBUViTNoS+nUqROaN28OALh69SoyMjJQVFRUZXxPlUolXuoJACdPnkRpaalJ4Vr419/fHy1atIBCoUBJSQlu3LgheWZcGAPQw8MDSqUS9+7dQ3l5uVi4Nu6J7e7ujiZNmohjDVY+aKlcuK4PNT3giYiIgJubG37++ecqy+x5wONoGkLmVPbqq69i/fr1kuNb1oRSqWTRj/DKK68gOTkZR44cqfU2oqKixF47VDf2zBy544zKpVAoEB0dLe5HhR69wu1+/fqJheDr169DoVBIFgfc3NxMCq4PP/ywrOfv3LkzOnfuLKudxpPake1YI38AoEePHvjqq6849notNMTjnMri4uKwZs0aqxT+XF1dERcXV/dG2YiLi4vYkaa25FxpJXyXlCpQVy5OG98vt4gtte36VrnjkVqtxvfff2/V59i5c2fjLiDn5+fj8uXLAP7oOXbq1Cn4+voiKCgIb775Jo4dO4aEhAQAFTvw9957D8888wwWLFiAixcvYsWKFXjppZccsudXcXEx4uLisGPHDty9exfl5eVQKpVo0qQJYmNjERcXxx5bMhkMBhQXF8sqDMs9YJUqDFf+3cPDw6rjvDbmHZYtOGLm1GbSoTlz5pjthWNMo9Fg+PDh1U6Q1LRpU1mXIgEw6ZVqSVBQEPr16yf+bjAYTArY7u7u4merd+/eKCgoMCleC+t5enqKvZpLS0vRv39/k/EJjcc07Nq1K5o3bw6dTofTp0/jt99+w82bN8UCtHCgoVKp0L17d/GA49KlSygsLJScxEbIbWGiGksF7NLSUvGA7MyZM7hz547ker6+voiIiBAfc/jwYcne1wqFAu3bt4efnx9UKhVu3bqFnP9wYRQAACAASURBVJwcky/CGo0GKpUK7u7u6NKli3hAc+XKFbFHlvAjfLH29fU1e8JBipubG5KTk3H27Fns2LFDch17HfDYmyNmTmVKpRI7d+5ETExMtcMxWRIdHc2iH0GpVGLNmjWYPHkyzp8/X+PHs9efZY6UOdX9Hwo9foV9n7e3tzgGsRQPDw+8/fbbsp47LCysxu0lx1fX/NFoNHjyySexdOlSZtD/caTMkcvNzQ1RUVFWGWYnOjqa9RwJLi4u4veP+iRMcFpdkdkaRWzhe6yxmgxFKUd1w5fWF0VeXp5tRuGuRkpKCsaOHVvl/qlTp+KTTz7B3Llz8csvv+D06dPist9++w0LFixAamoqfHx88OSTT+Lll19uMIEjpfJZGGFioePHj1ssFLq6uiIqKgoJCQl2m3HR1qTOWJWWllosCgu35V4C4e7ubrEoLPzY68AgNjbWKjusPn36cNzRShwxczZt2oQ5c+bIHneqJjp37oyUlJRG3SNQzllyoUe1cYFbKGY3adIEvr6+0Ov1uH37Ni5evCiOt2g843pZWRmioqLg4uICnU6H1NRUZGVlVZnAR6fTwdfXF926dYNOp8P9+/exe/duk4K10Pu6vLwc4eHhYnE/IyMDV69elfwbNBoNYmJixN8PHTpkNjODgoKwefNmWcVCFxcXXL58Ge7u7ggODjb7GF9fX6tPMuMIHDFzzDly5AjGjh1bqyJyWFgYNm7cyN5aaNxjIBvLzMzEzJkzceLECVk9gxQKBbp164Z169bxfWSBI2VOZGQk0tPTzS5PTEysMqliUlKS2RPVISEhFodeaqyYOVXVJn9CQkLwww8/NJhesg2FI2VOTZSWliIkJKROBUCtVou0tLRGU8cRNMbMETpCVS4yR0dHIz8/v9rHp6SkICAgoNrXzdvb22JnpfrSYArIjYXxh+jIkSOYMGFCjcJIq9Vi8+bN6NmzZ3010S6ES9ONi8Dnz5+Ht7e3SZFYbm9cV1dXi4VhLy8vaLVaqNXqev7L6oY7LDKm0+kwYMAAq076AVQM0/D8889j0aJFVt2uo3GEgxyhYGzc81r4V6vVQqlUQqfTITs7G7du3RJnizceQgSomIBEOLg5fPiw2JOrchG7devWWL58uaxC4e+//47mzZujXbt2Fs+K2+uAh6wrIyMDsbGxsoezUCqViIqKwtq1a1n0+z+OkDm2Ul5ejvj4ePz000+4dOmS5IlStVqNZs2aoV27dvj888/RqlUrO7SU6sPChQstDttWU3PmzGmUV7pUh5kjTU7+aDQahIaGYsyYMVi4cCF7HTcyR44cwejRo2vViUej0WDr1q1OV7+Rg5nzh5CQEOTm5ppdLlxps337dgQEBCAqKsrilTb26pDDArKNCR+ixhJC5eXlKCgoMNtTWLhdVFRU5bFSs3aqVCqLvYW9vb2h1WqdaoKIxvJeIXmWLFmCFStWWHX8pp49e2LHjh2N/mD4/7N379FRlef+wL9zn8lM7uQmIQFChIAKKBepooCX4qENFlft0Z4WUXuUan/t0tpq7Wo5tqtYqfUcz9HiFautt1UQUVSqLSAFEZSgqBADJIGE3MiQTC5zn/n9wXrHSTIzmSR7Zu+Z/f2sxdLMJbxMdp79vs9+9vNykhPZcBMeAPjss89QVlaGKVOmoL29PeZr1VqBnI78fj9+97vf4aWXXkJLS0vE/QIMBgOmTJnCRXcEjDlD+Xw+bNmyBe+99x5OnTqFlpYWaDQazJ49G+effz4sFgtaW1vxve99jxci0ojL5UJ5eblkbdsaGxt5q3gEjDmxifjz9ttv48iRI+jt7UUwGERBQQFWr16N6upqVd+pp3Ys/hs5xpyvpMudNkwgJ1ldXR3Ky8ujVpW+8sorWLZsGTIyMnDs2LGov3ByV5UGg8GYiWHxZyQb0A1OCnd1dWHatGkDHjObzYq6pSVZeMIiwe/3Y+nSpWPe9EPg7eRf4SQnsuEmPAsWLMCePXuGxPrHH38cd95555DX89bi9OPz+fDcc8/h2WefxalTp5CTk4NJkyahpKQEV155JRfdUTDmDO+RRx6By+XCT37yEzQ1NWH//v1obGzEDTfcgIkTJ8o9PJIQ27YlHmNOfDo6OvD000+HipkmTpyIG264Qe5hkQJ4PB5cffXVOHz48LDtRy+88EK8/vrrqr4LmDHnK+lypw1n8zKorq6Omgisr6/Ho48+iurq6phVtH19fVi+fLnkE6RYG9CJ/xcb0AUCgWG/n0ajidhTODMzc0BiOCMjY0himAHnK3PnzkV9fT2WL1+OAwcO8ISlYmPd9EPQ6/WYNWsWbyenYS1dujTmhOeDDz4Y0YW9r3/961IMixREr9fjmmuuwalTp7B//35cccUV+MlPfiL3sCgNmM1muFyuUBsd0Xos3r0uKHVs2bJFkrZtr7/+uoSjIjUScxpx96fVapVzOKQgRqMRTz31FCZMmIA1a9bgjTfeQEdHB4Czx0lOTg6+/vWvY82aNbwLggZYs2YNNmzYINmdNmvWrBn7oEaBCeQkc7lcMSuvxK7kCxcuRHFxcczvdeDAAbhcrriDk9vtjmsDunhvjc/IyIiYGB78mFarjev7UWxGoxFvv/02XC4X1qxZg02bNqGrqwtarRZmsxk2mw3f+MY3eMJSgdLSUmzcuHFEm34Ier0elZWVvJ2c4pYuEx5KHjXeKUSJYbFY0NXVFWp1JhLIUrZxImUwGo3YvHnzmNq2bd68mcUTNGZi7SrmPUwg02BmsxkPPvggFi9ejEcffRTnnnsuHnnkEbmHRQpmNpsxe/ZsSe60ufDCC2XL9zCBnGSPPfaYJItw4OxJbc2aNfjNb36Dvr6+IdXCgxPF8U7GTCbTgERwpKSwzWbj7agyESesOXPm4K9//SsqKirwq1/9Cm1tbazYVpHS0lJs27Zt2E0/gLNJ4/z8fCxevBhXX301byenEUmXCQ8lnmhjwgQySUXcjScqkMW5ixXI6Wnu3LnYunUr27aRrEQCmRXINByR1+G6iuKRDnfa8EhPsl27dkn6/V555RVkZ2fH9VqDwRAzKSwe45X71NDf349gMAiDwcAqb5XS6XS4//778fOf/zy06dCXX36J7u5u5OTkoLKyEpmZmcjKysKCBQuwZMkSuYdMKSodJjyUWOFJYyaQSSoWiwUA4HQ6YTQaQ4t0ViCnr5G2bauqqsLf//53rl9IciKBnJGRIfNISKnEMcIEMsUjHe604ZGeZD09PZJ+P6fTCZ1OFzUxHP61yWTioi6NiA0KjUYjE8gqp9frsWLFCqxYsQI7d+7Enj17cNlll+GSSy7B5s2bcfjw4VGdpIiEdJjwUHLEs3EuUbzEHQtutxtGo5E9kFVicNu2bdu2oaOjAx6PB0ajEQUFBaE+oydPnuS5hSQ1uALZZrPJORxSMCaQaaRS/U4bHulJFs/GcyNhMBhwzz33MDGsQuEVyOxjS9GIxTYTyDRWqT7hocRjCwuSWklJCVwuF7KzsxEIBNjCQmVE27YHH3wQe/bswc6dO7FgwQIsWrRI7qFRGtPr9SgqKgrNoVmBTNGI9ZU4VojiMdI7bS688EK8/vrrirhYyrLFJBuuUtRoNCIrKwtarRZarRZZWVkxDxS9Xs+Fmgp5PB54PB5oNBrodDpWIFNUXGyTlMSEZ8GCBcNOlk0mExYsWID6+nomj1WgsLAQq1atQkVFhdxDoTQyc+ZMXHvttaHjSsQdv98v57BIBqw+p2TJyMjAzTffHIo77IFM0bACmUZL3GnT2NiI22+/HZMmTYLZbIbRaER2djYmTZqE22+/HY2NjXj77bcVkTwGWIGcdJmZmXA4HFGf37Zt24Cr6t3d3dixYwcWL14c8fU5OTlSD5FSQH9/P4CvTlZMIFM0rEAmqYkJz6FDh/DXv/4Vb731Ftrb2xEMBpGRkYGcnJzQrcXcME899Ho9srOzYTQaeWGbEoYXRdWLCWRKpkAgAJfLBYvFwgpkikmr1bICmUYt/E6bhx56CH6/HytXrsQ555wj99AiYgI5yRYuXIiXX3456vPREsXRfP3rXx/rkCgFifYVFouFm+hRTFxwUaKICc8999yDJ598Enl5ebjtttvkHhYpABPIJBWfz4fe3t5QexSe09SLFw8omZxOJwKBADIyMtgqkKL61re+hc7OTmRnZ8s9FEoDbrcbPp9P0ec5Zp2S7I477oDJZJLke5lMJqxZs0aS70Wppb+/HxqNBtXV1fjpT3/KxTpFxQUXJZq4lZwLLHXr6urCm2++iaamJp6TSDLNzc3405/+hK1btwLgOU3NxMUDn88n80go3Xm9XqxduxY1NTWsPqaYxMVNFnORFA4fPoyPPvoIHR0dcg8lKh7pSWY2mzF79mxJvteFF17I24NVSmxgxUkNDVZYWIjp06dj3LhxANjCghJPbA7LBLK6uVwu1NXVoaenhwlkkozFYgFw9vgC2ANZzVh9Tsmi1WpDxxn7H1MsYg7MBDJJSVyYUCIe6TLYsmXLmE9GVqsVr7/+ukQjolQjeiBzUkODVVVVYfny5Zg6dSoALrgo8UQih5NnCgaDCAaDTCCTZEShhNPpBMAKZDXjz56SRavVwuPxIBgMcq1FUQWDQfz5z3/GgQMH5B4KpYlUmD9ztScDo9GIzZs3j3onxbG+n1Jff38/fD4ftm3bhueee07u4ZCCiQUXK5ApUZhAJqJEEQlkUYHMJKJ6sYUFJYtGownFGN7tSdH4fD50d3fD5XLxLjySFCuQaYi5c+di69atI76qabVasXXrVsydOzdBI6NU0NfXh0AgALfbje7ubrmHQwrS19eHzs7OUJV6+GJbyScjSl1sYUGCiDGpUEFBqcFgMECn08Hn88Hn8zGJqGK8o4qSScQYtoukaESVuk6n47yHVIMJZBnNnTsX9fX1WLBgwbAb65lMJixYsAD19fVMHhP6+/sRDAZhMBhY9UcDfPTRR3jyySdRU1MD4GxVKBddlEjs/0bAwKQxF1IkFY1GE+qD7Ha7mUBWMVafUzKJGMMKZIpGFOcwgUxSEWspsbZSIq72ZGY0GvH222+jsbERt9xyCzIyMqDX62Gz2ZCbm4tJkybh9ttvR2NjI95++222rSAAX/VAZgKZ4iHiBttYUCKIFhasQCZWIFMiiApAt9vNJKKKiZ89N1CkZGALCxqO2+0GACaQSVX0cg+AzjKbzbjnnntw8uRJAMD//M//oKSkROZRkVKJFhZMIFM8WIFMicQEMgFnL1RNmDABX375JRdSJKlrrrkGGo0GDoeDCWQV41yGkqmiogIajQaZmZlyD4UUSrSw0Gq1XI+TJCZPnoySkhLk5eXJPZSomEBWEIfDAa/XC5vNxqudFFUwGGQLCxoRsehiBTIlAnsgEwDk5ubi2muvxdGjR5lAJkmVlpYCOHv3FVtYqFd4AjkYDDLOUELl5uaioKCACWSKSlzMYgUySSUrKwtms3nY9rZyYgJZQRwOB0wmE3Jzc5lApqhcLhcCgQBMJhOveFJcRAsLVu1QIogKZE6eiRt1UqIxgaxeWq0WOp0Ofr8ffr8/VI1OJDVRrANgxBvek3pkZWVh1qxZcLlcnAOTavDMqyAOhwMzZ87EokWLQhNkosHEhCYrKwvnn39+aHMZomh42yclEltYEHC2Et3pdMLn83EhRZI6duwYjh07Bp1OhylTpkCj0cDn8yEQCPAiusoYDAb4/X54vV4mkClhnE4n2tra0NPTo+jNrEhe48aNw9y5c9HQ0MBzEUmitbUVDocDXV1dKC8vl3s4EfHMqyAOhwMAeKsMxdTX1wfg7K1Vixcvlnk0lAq4iR4lEltYEAB0dnbiqaeewpdffomZM2fKPRxKIy0tLfj4449RXl4OjUYDvV4Pr9cLn8/HzaVVJrwHNgsoKFH6+/tRX18Pt9sNp9PJOENRcfNgklJ7eztOnz6Nnp4euYcSFRPICtLV1YVgMIisrCy5h0IKxluqKJaZM2di4sSJyM7ODj3GHsiUSCKBzOoLAsDepCQ5kSgUO94bDAZ4vV54vV4mdlSGLUwoGXp7e0MXq9iaiaKx2+04efIk3G4358CkGoo60p9++mlccMEFKCoqwuWXX449e/ZEfe2uXbuQk5Mz5M+XX36ZxBFLq76+Hrt378bu3bvlHgopmEgg6/V6NDQ0oK2tTeYRpa50jDk5OTkoLy9HTk5O6DG2sKBEYguL+KVjzImECWSSkthMRiSQw6tQKbZ0izmcz1Ay9Pf3Q6PRwGAwMIE8QukWc2I5dOgQtm7divb2ds57SBLiOFJy3FFMBfKmTZtw77334uGHH8bFF1+Mp59+Gt/+9rexd+9eTJgwIer79u7di9zc3NDX48aNS8ZwJef3+9Hd3Q2AlaUUm2hh4XK58NJLL6GsrAzf/e53ZR5V6lFTzGELC0okJpDjo4aYo+QJL6WuSBXIwFexhyJLx5jDBDIlQ19fHzQaDXQ6HXsgj0A6xpxYPB4PgsEgN7UnySl5Pq2YI/2xxx7DjTfeiJUrV2Lq1KlYt24dioqK8Oyzz8Z8X0FBAYqKikJ/UnUB29PTE7oVz2azyT0cUjBRgSwWVDxhjU66xpyjR4/iH//4BxoaGkKPccFFiSQWV6y+iC1dY47Anz8litlsBsAK5JFKx5gjfvZsYUGJFF6BzARy/NIx5sQiCnN0Oh3nQCSJVKhAVkTmyePx4ODBg1iyZMmAx5csWYIPP/ww5nsXLVqEqVOnorq6Gu+//34ih5lQPT098Hg8MJlMyMjIkHs4pGAigSxu6WQCeeTSOeY0Nzdj3759OHXqVOgxUYHMxTYlAiuQh5fOMSccN5OhRBhcgcwE8vDSNebwgjglQ3gPZCaQ45OuMScWr9eLYDDIBDKpiiJaWHR2dsLv96OgoGDA4wUFBWhvb4/4nuLiYvzxj3/EhRdeCI/Hg1deeQXLly/H1q1b8bWvfS0Zw5aUw+GAz+eDyWTirsIUk2hhIRLITNqMnNpiDltYUCKJxRVjUXRqizlcSJGUzGYz8vPz4XQ6AXAjtXika8xhBTIlgyjWYQ/k+KVrzIlFtLDQ6/Wc95AkTCYTTCaTotdUikggj0ZlZSUqKytDX8+bNw8nTpzAo48+GjPg1NXVJWN4MUUawxdffIEzZ87AYrGgo6NDEeNUAn4OQzU2NqKrqwsdHR2w2+1oa2sLfU5yf17hv5PpJlViTlNTE+x2O5qamkJ/d0tLC+x2OxobG2U/RpSOn8/I1NXV4eTJk7Db7Th16lTSPz/GnKHkOoY9Hg+mT58Ou92O9vZ2/i7FiZ9TfBYvXgzg7OfV2dkJu92Oo0ePJj2RyJgzVDKPYTH3PXbsWCiZnOwxpDp+VsM7fvw4ysrKsHz5cvT09KCnp0e2sTDmDKWEY1jMf7u7u2EymdDa2qqIcSkRP5f4VVVVITMzEx6PR7bPbbiYo4gEcn5+PnQ6HTo6OgY83tHRgcLCwri/z0UXXYRNmzbFfI3cQbiuri7iGI4fPw6TyYRx48ahqqoK48ePl2F0yhLts1I7q9UKrVaLyZMno66uDuPHj0dlZSU/rxFI55hz6tQpnDhxAqWlpaHjoqKiAp9++inGjRvHYyQG/g6NjPi86uvr0dzcjPLycn5+UaRzzAlntVpx6NAhFBcX81iIA2POyIjP6/PPP0dPT09o/kNDpWvMOXbsGDo7O3HOOeeE/l7+HsWPn1V8bDYbAoEArFYrP684pWvMiUT8HuXl5SErKws2m43noygYc0YuLy8P5eXlqKiokHsoESmiearRaMSsWbOwffv2AY9v374d8+fPj/v7HDp0CEVFRVIPLykcDgcmTJiAyy+/fMAupETh/H4/nE5naGMHgLcKj4baYg57IFMisQfy8NQWc3heokTw+/0IBALsgRyHdI057IFMiRYMBkPtAtlWMn7pGnNiuf766/Gtb30LGRkZnPeQaiiiAhkA7rjjDtx222246KKLMH/+fDz77LNobW3FqlWrAAC33XYbAOCJJ54AADz++OMoKytDVVUVPB4PXn31VWzduhXPP/+8bP+Gsejp6UF+fj4uueQSbqJHUYmeXFarFVOnTkVpaemAW/gofmqKOWLBxR7IlAgigcwNPWNL95jjdDpx4MCBIdVHRFJ4/vnncejQIdx1113sgRyndIw5vHhAieZ2u+H3+9HY2IgtW7YgJycHJSUlcg8rJaRjzInFarUiMzMTWq2Wc2CSxBdffIHW1lZcfPHFiq1AVkzmacWKFbDb7Vi3bh3a2tpQVVWFV199FWVlZQDO9vUM5/V68atf/QqnTp2C2WwOvf7qq6+WY/hj5nA4AABZWVkyj4SUTCSQMzIyYDQaQ5WlNHLpGnMsFgvy8vIGVE2wApkSSWyix8lzbOkacwSn04m9e/eira2NlTgkOZE4dLlcTCDHKR1jDn/2lGii+tjv9+P06dNwu90yjyh1pGPMGY7YZJHzHpKC3++Hz+cLFecokWISyABw66234tZbb4343NatWwd8/eMf/xg//vGPkzGshPN4PHA4HOjs7ERTUxOmTp0q95BIocITyDR26Rhz5s2bh3nz5g14TCSQWYFMiSASyGxhMbx0jDmRcCFFUhMXRZ1OZyjW8KLo8NIt5rCFBSWaSCCbzWYAX81xKD7pFnOiCQaD2LhxIxoaGhAMBllEQarBI10BHA4HXC4XmpubsXv3brmHQwomJjUZGRk4duwYNm/ejE8//VTmUZHS8ZZPSiT2QCaBlTiUKCKZ43a7WYWqYkwgU6INTiCL8xpROK/Xi7q6Opw8eRIajYbzHpKEOI6UHHcUVYGsVg6HA16vF0ajkZWlFFN4D+TOzk4cPnwYNptN5lGR0rGFBSUSW1gQMDBpzIUUSS28AplJRPXiBXFKtPAEssvlYgUyRSTu6hTnI86BSS14pCuAw+GAz+eDyWTibq8UU3gLC942TpG8//77ePjhh/Hhhx+GHgvfRE/JVzQpNbECmQZjApmkJqoBw3sgM4moPqw+p0RjCwuKhzj/iLkv5z0kBXEcKTnuMIGsAA6HAx6PByaTCVarVe7hkIKFt7Bg1R9FEggE4PF4BjTf12q1XHBTwohjjbGIeIGKEkUkc5xOZ6gKlUlE9eFchhJNrLVEUZeSEzkkH7G5ojgfMYFMasEWFgogKpDNZjMrkCmm8BYWvb29AHjCovgYjUZ4vV54PJ5QSwsiKbACmYCz5yKj0QitVsvzEkluwoQJWLhwIWbOnBma/zCBrD7iPMOfPSWKWGtNnjwZ2dnZyMnJkXlEpESihQUrkElKJSUl0Ov1io47LBdSANED2Ww2swKZYgpvYcGqPxoJ9g2kRBFVp4xF6paTk4Pvf//7mD59OhdSJLn8/HxUVVWhtLSUVagqxhYWlGiiAnnOnDm47LLLUFJSIvOISInYwoISobCwEBMmTGACmWLr6elBMBhkBTINS0xqrFYrkzY0IqLqWFwxJ5IKK5BJEOclLqQokXhBVL148YASLXytRRSNyWRCRUUF8vLyAHA9TtJScks4HukyCwaDcDgcOPfcc/GLX/wClZWVcg+JFCy8AjknJwfl5eXIzs6WeVSUCkQCmYsukhoTyDQYE8gkNa/Xi8OHD+Pjjz8OJRHDe/2TOjCBTIkUDAZDCWS/34+Ojo7Q10ThSktLcf311+P8888HwHkPSaO7uxunT59WdNxhAllm/f398Pl8sFgsMJlMvHpFUXk8Hni9XhgMBhgMBsyaNQs33ngjZsyYIffQKAVw0UWJwg09CTjbjuvll19GbW0tF1IkuWAwiF27dmH79u2sQFYxbqBIieTxeODz+WAwGLB//3689tprqKurk3tYpGCcA5OUTpw4gSNHjqCtrU3uoUTFTfRk5nA4AABZWVkyj4SULrz6mItzimby5MnIyMjA+PHjBzzOFhaUKKxAJuDsIqqnp4cxhhLCYDBAq9XC6/WG5kBMIKsPL4ZTIoW3rxBxRiQIicK5XC74/f7QxSyuzUkKqRB3mECWmcPhQCAQwN69e6HT6fD973+fAYgiGtyTy+PxIBAIwGAwMHFDIWVlZSgrKxvyuFh0MblDUuOGniQouWcbpTaNRgOTyQTgq5jDKlT1Ca8+DwaDXDORpMLXWmJOo+REDsnnww8/xJ49e0Lrcs6BSS14pMusp6cHXq8XgUAADoeDEyGKKrwCGQDeffddPPLIIzh06JCcw6IUwaodShSRNOSFLBI4l6FEEAlkkThmAll9dDoddDodgsEge2CT5CIlkHlhlCJxu90Avpr7ct5DUhDHkZLjDhPIMnM4HPB6vTCZTLBYLHIPhxRMTGpEApk9lyiStrY2fP755+jo6BjwODfRo0RhBTIBZye9wWCQVYGUMIMTyDyfqRMviFOiRGoXyApkikTc0ckEMqkNV3syczgc8Pl8MJlMocQgUSRiUiNulWECmSI5fPgwtmzZgqNHjw54nC0sKFHYA5kG40KKEkEkkD0eDzQaDfx+P5M7KsRNFClRent7AbCFBQ1PxB9xnHA9TlJImwrkU6dOobi4GLfeeuuAx/ft24fi4mLceeedCRmcGoRXIDOBTLEMbmGRzreNM+ZIjxXIlCjpkEBmzJEWE8iUCCaTCUajEX6/P+WrUBlzRk/87NnCgqQWXqyTbi0sGHOkxQpkSiQlx524EsjnnHMOVq5ciddeew3Hjh0DADQ0NODGG2/EvHnz8MgjjyR0kOmsu7sbXq8XRqORCWSKSU0tLBhzpCcSyKxAJikFg8G0iEWMOWNnMplw3nnnoaCgQO6hUJpatGgR7r77blRVVaV8ApkxZ/RYgUyJEt4Defbs2fjWt76FCy64QOZRSYMxR1pMIFMiTJ8+HfPnz0d5ebncQ4kq7tXeXXfdBaPRiD/+8Y/o7u7Gd77zHeTl5eH5558PTeJoZPx+P/r6+tgDmeIyuIVFuvcdZcyRllhwMYFMUgpPHqf65Jkxs1u4LgAAIABJREFUZ2zMZjPmzJmDkpKSlD8WSJnCjyuxaE/ljfQYc0Yn1S8ekHKFF+tkZWWhoKAANptN5lFJhzFHOiL+MIFMUtLr9TAYDKF1uxLFPbKioiLcfPPNePLJJ3H06FF0dnbivffeQ05OTiLHl9Z6enoQDAZRUlKCiy++GBMmTJB7SKRgg1tYpEPVXyyMOdISFcipvNgm5UmH9hUCY87YiVvuuJCiRBPJjlQ+pzHmjA4rkClRRAI5nZLG4RhzpHPVVVehr68Phw4dApC+63GiwUZ0pP/oRz+C3+9HTU0NXnzxRUycOHHA808++SQWLlyI/Px8rF27VspxpiWHwwEAmDRpEpYsWTLk8yQKNziBvGDBAixfvhyFhYVyDiuhGHOkwxYWlAjpdiGLMWf0fD4fmpub0dPTwwQyJcTJkyfx5JNPYtu2bWlThcqYM3LpcPGAlCl8rXX8+HG8//77OHLkiMyjkhZjjjQmTJiAadOmhdZXnPeQFBoaGvDZZ5+hqalJ7qFENaIV38MPP4xAIAC/34/c3Nwhz5eUlOAXv/gFvvGNb0g2wHQmEsjZ2dkyj4SULhgMDkkgl5WVYfr06cjMzJRzaAnFmCMdseBiApmklE4VyABjzlg4nU78/e9/R319PRdSlBDBYBCdnZ3o6upKmypUxpyRS5eLB6QsHo8HHo8Her0eJpMJ7e3tOHLkCE6dOiX30CTFmCMt3nlFUurt7UVXV1co76NEcSeQH3/8cTz11FN48MEHYbVa8fvf/37Ia775zW/immuuQVZWlqSDTFc9PT2h/zY0NPBKOkXldDoRCARgsVjSJlEzHMac0bn00ktx9913Y968eQMeF1fIueAiKaVTL3bGHOlwIUWJIM5jLpcrlEQUMSgVMeaMTrpcPCBlCS/U0Wg0oXmNuNMqHTDmSCMYDGLnzp344IMP0u5OPJKXmD8rOe7EdaS/9dZb+OUvf4mf/vSnuP322/Gf//mf2LRpE2praxM9vrQmKpA/+eQTvPTSS3C73TKPiJRqcPUxAHz66afYu3dv6EJEOmHMGT29Xg+j0TjkQgMrkCkRxAQn1S9sMeaMnUajCVXiECWC2WwGcDaBnOpJRMac0WMLC0qE3t5eAF/1P063BDJjjnS8Xi/27NmDPXv2sAKZVGfYBPLBgwfxgx/8AMuXL8f9998PAPjhD3+IjIwMPPjggwkfYDpzOBwDFlsWi0XG0ZCShe8KLHz88cfYvn17aMKTLhhzEoO3fFIipEPlBWOOtILBIBdSlBAmkwnAwArkVDynMeaMTSr/7Em5BhfriHlNOlwYZcyRlog9RqMxLebBpBxi/qzkuBPzSG9ubsYNN9yA6dOn409/+lPoH5SXl4ebb74ZmzdvxhdffJGUgaYjh8MBr9cLo9EIi8XCwENRiUmN1WoNPZaOJyzGnLGrqanBX/7yF3z22WcDHmcLC0qEVO+BzJgjLVbiUCKJ85jT6QzFnFQ7pzHmjF2qV5+TMoliHbHWSoVbyePBmCO98AQy5z2kNvpYT44fPx6HDx+O+NwDDzyABx54ICGDUguRQDaZTAMqS4kGi9TCIh0TyIw5Y9fd3Y2TJ0+ioqJiwOPhLSxYIUhSSfUEMmNOYjC+UCLodDqYTKYBLd9SrQcyY87YsYUFJUK6JpAZc6QnYg8rkElqqXDng6RHus/ng8vlgt/vh9/vD/1/vJ5++mlccMEFKCoqwuWXX449e/bEfP2//vUvXH755SgqKsLMmTPx7LPPjvWfkDRutxsulwvBYBAGg4HtKyimSC0s0qX36Fgw5sRPq9Xytk+SnNomzow50YX3QGYCmRLloosuwte+9jXVnM8Yc4YSFchMIJOUBieQrVYrxo0bp7rN5Bhzhif2kzEYDJz3kKQyMzORn58/4K5zpZF0xbdu3ToUFxfjxRdfxB/+8AcUFxfj5Zdfjuu9mzZtwr333ou7774b77//PubNm4dvf/vbOHnyZMTXNzQ04Prrr8e8efPw/vvv46677sLPfvYzvP7661L+kxJGbHwmbsdT8kFC8ovUwkKczNWSuImEMWdkRLzhRnokFbXFIcac6CwWC6699lpMmzaNCylKmMsvvxyXX355qPAi3RPIjDlDqeXiASXX4Ls9KysrsWLFCixcuFDOYSUdY87wIvVA5ryHpFBWVoaqqiqMHz9e7qFEJemK77777kNXV9eAP9/97nfjeu9jjz2GG2+8EStXrsTUqVOxbt06FBUVRb0KtWHDBhQXF2PdunWYOnUqVq5ciRtuuAH/93//J+U/KWEcDgeArxI6rECmWGK1sFDzCYsxZ2TYN5CkluotLEaKMSc6rVYLm80Gk8mk6vMSJYda2hgw5gzFuQwlgtiUXO1FXYw5w9NoNMjMzITVamUFMqmOIkqGPB4PDh48iCVLlgx4fMmSJfjwww8jvmffvn1DXn/FFVegpqYmJSYUIoF83nnn4Uc/+hEuu+wymUdEShaphYXRaITJZFJN4kZKaow5ADfSI+mJiTPjUGxqiTlK7tlG6cFut+P48eOhPsjpnkAerXSOOWq5eEDJFeluz2AwmPI9kJMlnWPOYGVlZbjzzjuxbNkyJpBJUh6PBy6XS9F3C8fcRC9ZOjs74ff7UVBQMODxgoICtLe3R3xPe3s7Fi1aNOT1Pp8PnZ2dKC4ujvi+uro6ScY8FnV1dfjiiy9gt9vR29uLlpYWuYekWEr4eSlBY2Mjuru70dbWFlo0LV68GAAGHD9yf16VlZWy/v3xSueY09TUBLvdjqamptDfLf575swZ2O121NbWoru7O6njShVy/w6lmmPHjsFut8Nqtcry2THmDCXXMezxeLB582Y0NDSgubmZv0tx4uc0Mq+99hqOHDmC8ePHw263o7GxMamfIWPOUMk+hpubm2G323Hy5Mkh8xwaHj+ryBobG+H1etHS0oIzZ86gvr4e7777LiZOnIirr75atnEx5gylhGNYjKG1tTV0Lgrf4JW+ooSfV6o4duwYampqkJOTg9zcXFnGMFzMUUQCOZnkDsJ1dXWorKxEbW0t8vLyUFVVJfuYlEp8VnT2arhOp8N5550Xtd0JPy9lSvbPxOPxIDMzE9OnT0dlZeWA46K0tBQ+nw+lpaWYNGlSUseVCvg7NDJ1dXWYMGEC8vLyMH78eH52CiHXz6G/vx89PT3o6upCaWkpj4c4MOaMTF1dHSZPnoz29nYUFBTA6XSioKCAn6HMkv35G41G5OXlIT8/f8g8h2LjZxWZz+dDZmZmaK0VvilsUVERPzOFkfvnEf57VFhYCJ/Ph8mTJyu6b61cGHNGzmKxKDruKCKBnJ+fD51Oh46OjgGPd3R0oLCwMOJ7CgsLI75er9cjPz8/YWOVimhh8emnn+Lo0aNYtGgRxo0bJ/OoSInEDrharRZms1nu4aSFdI45M2bMwIwZMyI+x030SGpq64E8WukccyLhrZyUKGIeJNoXsI1BZOkcc9jCgqQm+h9nZGSEzl9ic2C2sIhPOsecwT766CO8/fbbuPTSS0PHh1o2k6bEEvFHyS3hFHGkG41GzJo1C9u3bx/w+Pbt2zF//vyI75k3b17E18+ePTs0sVAykUA+c+YM6urqQotwosHC+x+HL8qfeOIJrF+/nsfOKKgx5gBfbTzDBDJJhZt5xkcNMSf8GODxQIki7sISsUfJfTLllM4xR4yFP3uSSqT+x0wgj0w6x5zBXC4X+vr6EAwG2QOZVEcRCWQAuOOOO/Diiy/i+eefR21tLX7+85+jtbUVq1atAgDcdtttuO2220KvX7VqFVpaWnDvvfeitrYWzz//PF588UXceeedcv0T4hYMBtHT0wPgq5NStLYERJEmNcDZiw9nzpzhCWuU0jXm9PX1obOzM3TchBMVyKzaIamwAjl+6RpzwnEhRYkmKpDFhVCez6JL15jDBDJJTRTrMIE8NukacwYTscdgMLACmVRHES0sAGDFihWw2+1Yt24d2traUFVVhVdffRVlZWUAzm4MFW7ixIl49dVX8Ytf/ALPPvssiouL8fvf/x7Lly+XY/gj0t/fD5/PB7PZHJoAZ2RkyDwqUiqRCAw/RnjFc+zSNebs27cPe/fuxaJFi7BgwYIBz7GFBUlNTJyZQB5eusYcomRiC4v4pWvMEXdT8WdPUgm/21NIhVvJlSZdY85gIoFsNBq5HidJpULcUUwCGQBuvfVW3HrrrRGf27p165DHLr30Urz//vuJHpbkRPsKi8UCl8sFk8kUmgwRDRZpUhOetOEJa/TUEnMEUbXDBDJJhZUXI5POMYctLCgZRAJZLOBZhRpbOsYcViCT1MRay2azhR4T5zFWII9MOsacwcTFK6PRyHkwSYoJZIpIJJDFJJjVxxRLpBYW4rZxnqxoJEQFMhddJBW2sCBBq9WiqKgIbW1tTCBTwowbNw6333473G43NmzYwPOZCoVXICt5kU2pI9Ldnnl5eVi4cCGqqqrkGhYpVHgLC1Ygk5REtf6ECRNkHkl0TCDLQCSQRTKHCWSKJdKkhlc7aTRYgUxSYwKZBKPRiEWLFqG/v58LKUoYvV6P3Nxc9Pb2AgA3ElYhnU4HrVaLQCDA6lCSRKQeyDabDVVVVaisrJRrWKRQIoFsMpmYQCZJ2Ww25ObmDrgbQmmYQJaBSCDn5OTAarUiNzdX5hGRksVqYcEEMo0EE8gkNcYiioQLKUo0UYXKCmR1MhgMcLvd/PmTJCIlkImiOe+885CTkwObzRaaB3PeQ1JS8t01TCDLoKenBwBQXl6OGTNmyDwaUrpILSz0ej0WLFjAqj8aEXHXAzeeIamwnQ4JwWAQLpcLPp+PCylKqHfeeQd2ux1er5exR6WYQCYpRUogO51OHD58GF6vF9OnT5draKRA06ZNC1WmswKZpNTe3o6Ghga0tbXJPZSoOOuSgahAzsrKknkklAoitbAQtwovXLhQrmFRChIJZFYgk1TCN/QkdfN4PHjttddw6NAhuYdCaa6xsRGNjY3w+/0IBAJsY6FC4X2QicYq0lqrt7cXu3btwu7du+UaFqUAkUDmxUySgt1uR1NTEzo6OuQeSlSsQJZBd3c3gLMBx263IzMzM3RrOdFgkVpYEEUze/ZsTJ48GTk5OUOeYwsLkhp7IFM4VuJQMlgslgFf+3w+xiCVEfMZViDTWPn9fjidTmi12gFrLZEQVPKt5JR8gUAAR48ehVarRUVFBec9JKlUOI54qSTJ/H4/+vr6oNFoUFNTgyeeeAJHjhyRe1ikUMFgMOJVcY/Hg/r6ejQ3N8s1NFKonJwclJeXIzs7e8hzogKZCy6SCnsgkxA+6U2FCTClLrPZDOCrxA7PaerDBDJJJbxQJ9J5jBs1UjiPx4N//vOfeP311wFwHkzqwyM9yfr6+hAMBmGz2eB0OgGwspSi83g88Pl8MBqNoeQfcLYNyssvv4ytW7fKODpKNaxAJqmxApnCsRKHkmFwApltDNSHmyiSVKJtoCcSgkwgUzixhhJrKs57SEqpcOGKLSySTJyksrKymECmYUWqPgZ4tZOiq6urw4kTJ1BRUYGJEycOeE5MdrjYJqlwEz2KhAspSiTRwoIVyOrF+QxJJdpaS5zH2MKCwonzjSjs4pqc1IZHepL19vYCALKzs0PJ5MG93IiEaFfFebKiaJqamrBv3z60trYOeY6b6JHUGIsoEiaQKZFMJhMAJpDVjC0sSCpibT54rZUKlYCUfGINNfg8xHkPSSEVLlxxxZdk4iSVmZnJCmQa1nAVyLxtnEYivIWFkk9MlDoYi0jQaDSMK5QUhYWFqKyshM1mA8AqVDUSLSz4s6exEmutaC0siMK53W4AbGFBiWE0GmEymULHlxKxhUWSiQSyxWKBz+eDwWAY0NuWKNxwCWSerGgktFotDAYDvF4vvF4vYw+NGXsgk6DT6TB//nxoNBqemyihpk2bhmnTpuHll19GfX09k4gqxAQySSXa3Z5WqxU/+MEPcO6558oxLFIotrCgRKqoqIDRaFR03OGRnmTiJCWuKrB9BcUSbVLDvqM0WtxIj6TECmQStFotSktLkZubywQyJQXbGKgXf/YkFbHWitQDmecyGkysn0QCmRXIpDasQE4yUYFcXFyMm266iVfOKaZoFcjiZMUEMo0UN54hKfFiFoVjCwtKhkAggL6+vtCtxEwiqg8TyCQVkUAWLXGIYqmqqsLKlStRUVGBYDDIBDKpDhPISdbb2wubzYa8vDz2PqZhRUsgjx8/HqtXr2bShkaMG+mRlNjCgoRAIIDa2lq0tbVxIUUJZbfb8dRTT6GlpQUlJSW8IKpCbGFBUom21vL5fNi0aROKi4uxcuVKOYZGCqTVamEymWCxWAa0lOS8h6Rw9OhR1NTUoKCgAAsWLJB7OBExgZxEbrcbHo8HBoOBrSsoLtFaWBgMBuTk5MgxJFI4i8WCvLw8mM3miM8zgUxSYgUyCYFAAIcOHUJzczMXUpRQ4vwmFu9MIqoPK5BJKtHWWhqNBqdPn+b5jKJi/2OSmt/vh8/nC62vlIgJ5CRyOBwAgMzMTBw9ehTHjh3Dueeei8mTJ8s8MlKqaFfFiaK5+OKLcfHFF0d9nosukhLb6RBRsokiDJ/Ph2AwyPOZCnEuQ1IIBAJwOp3QaDQReyCL1xAJH3/8MXbt2oVrrrkmlMPhRQaSijiWlNwSjiu+JOrp6QEAZGVloampCTU1NWhra5N5VKRk0RLITU1NeO2117Bv3z45hkUpjBXIJCW2sCBBo9GwFyAlhU6ng9FohEajgd/vZxJRhUQLC/7saSz6+voQDAaRkZEx5EJ4eCJHyckcSq7Tp0+jubkZfX19rEAmyaVCApkVyEkkKpCzsrJCt8uwlQVFEwgEoiaQu7u7ceTIEZ6waMTEoosJZJICE8gUCRPIlGgmkwlarVbxt3pSYnBDYJJCrDs9w/vaBgIBznMIAEKbtxoMBl40p4RRcgKZ2ack6u7uBnA2gex0OgEM7bdEJDidzqhXxcOb9hOF27lzJx5++GHs378/4vOiApmLLpKCiEVcWFE4npso0SwWSyiBzCpU9WELC5JCtP7Hglh/KTmZQ8klYo7RaGQCmSSXCscSE8hJFF6BLK54sgKZool1VZy3zFA0fr8fHo8nakUWW1iQlLiJHkWSChNgSm1ms5kJZBVjCwuSgkggR9trhn2QaTCxfjIajVyPk+TYwoIGiNTCgpujUTSxjhERVFj1RyMlqnaYQCYpMIFMgkajgV6vh06nYwKZEm7RokUoKirCBx98wDtqVEgkkNm+hMZCrLVsNlvE56dOnYri4mKe0yhEXLRiCwtKhHHjxqG8vBzFxcVyDyUqrviSKHwTPdHCgglkikZUIEe6rYpJGxotUYHMqh2SAltYkKDVarFs2TLMnDlT7qGQCowfPx5lZWXQ6/U8n6kQW1iQFGLd7QkAl1xyCZYuXRo63ogiVSAzgUxSyc/Px4QJE1BYWCj3UKJiBXKSBIPBUAWyzWZDUVERXC4XTCaTzCMjpWILC0oEViCTlBiLKByrcSiZRBUqK5DVhwlkkkJvby8A7klE8Zs8eTLcbjcyMjJCBV2c85DUlNzCQhErPrfbjXvuuQeTJ0/GOeecg3//939Hc3NzzPesXbsWOTk5A/6ce+65SRrxyPX19cHv98NsNsNkMuE//uM/cOuttzLgUFSxWlhkZmZi4sSJyM/PT/aw0oIaYk40XHSRlMTkmRXIsakl5jCBTMnS1NSEffv24fTp0zyfRZDuMYcXD0gKse72BIDOzk40NzezVUoc0j3mCEuWLMHVV18Nm80WmvOwiIKk0tvbi9OnT6Orq0vuoUSliArk++67D2+99RaeeeYZ5Obm4v7778d3vvMd7Ny5M+aitLKyEm+++WboayUvYMOrj4niEWtSM23aNEybNi3ZQ0obaog50bCFBUmJCeT4qCHmBINBvPvuu2hsbGQCmRKuo6MDhw4dQldXF5OIEaR7zOHFcJKCKNaJlkB+5513YDKZ8MMf/hDZ2dnJHFrKSfeYEwkvmpPUWlpacOTIEZSVlck9lKhkTyB3d3fjhRdewGOPPYbFixcDAJ544gmcf/752LFjB6644oqo79Xr9SgqKkrWUMdE9D+2Wq3w+XwIBoPsp0QxDdeXi0Yn3WPOlClTYLPZUFpaGvF5kUBmCwsaq2AwyBYWcUj3mBOur68PbrebiylKOLPZDK1WC6/XyyTiIGqIOUwgkxSGW2uJc5mSbydXAjXEHODscXD69OlQ6xPOgUmNZD/aDx48CK/XiyVLloQeKy0txdSpU/Hhhx/GfG9DQwOmTZuGCy64ADfffDMaGhoSPNrRC69APnLkCP7whz/gjTfekHlUpGSxWlh4PB44nU5W3YxCusecsrIyzJs3D+ecc07E59kDmaQSDAYRDAah0Wg4eY4h3WOOEJ40ZgKZEs1isUCr1cLn83EuNIgaYo5Op4NWq0UgEGB7ARqVQCAwbAWymNswgRybGmIOALhcLjz99NP429/+BoAVyCS9VFhPyV6B3N7eDp1ON6SXa0FBAdrb26O+b86cOXj88cdRWVmJ06dPY926dbj66quxd+9e5OXlRX1fXV2dZGMficOHD8Nut6OyshK1tbWw2+3o7OyUbTypQs2fT2NjIxwOB1pbW+FyuQY8t2/fPhw8eBBz5szBhRdeGHpc7s+rsrJS1r8/HmqJOdHGcPr0adjt9iGP01n8TOIXCARgt9uh0+lk+9wYc4aS8xgWd1vV19dzwR0nxpyREZ9XR0cHuru70d3djdbW1qR9jow5Q8l1DHd3d8Pr9cLn8/H3aAT4WZ3ldDrR2dkJk8mE48ePR3yNRqOB3W7H0aNHkZOTk+QRnsWYM5Rcx3Bvby/sdjusVivq6upgt9tht9sRCAT4exUDP5uRcTqd6OjoUOzaKmEJ5N/+9rf4wx/+EPM1Y6nAveqqqwZ8PWfOHMyaNQsvvvgi7rzzzqjvkysIf/bZZ8jLy4PVakVGRgby8vIwZcqUlDgpyKWurk7Vn4/VaoVer8f5558Ps9k84LmmpiacOHECZWVloc9I7Z8XY85Zra2t6OzsRFFREcaNGzfkuMjPz0deXh5yc3NVfbxEovbfoZH6/PPPkZeXB5PJpMrPjTFnKJvNBofDgUmTJmHKlCmyjSNVMOaMTPjnVVBQgHHjxuHEiRPIzs5WxefImDNQSUkJent74fP5cN5558kyhlTDmPOV9vZ25OXlYdy4cVE/E41Gg7y8PEycOBEFBQVJHqH8GHMGOn36NPLy8hAIBFBZWYm2tjbk5eWhsLCQv1dRMOaMjEajgcViQX5+vmI/t4QlkFevXo3rr78+5mtKS0uxf/9++P1+dHZ2Yty4caHnOjo6sGDBgrj/PpvNhmnTpkW9gii38BYW4f2QiSLx+Xxwu93Q6XQwmUxDnmfPpaEYc8764osv8OGHH2LJkiUD/n0C+waSVNQehxhzhuLtnJQsogeyz+eD1+sNtdNJZ4w5A+n1Z5exbGFCoxHPXjNifiPmO2rDmDOQaP8n1lKc85AaJSyBnJ+fP+Q2hkhmzZoFg8GA7du349vf/jYAoLm5GbW1tZg/f37cf5/L5UJdXR0WLlw46jEnUngCWdzKYbFY5BwSKVh4/+NIJyUxkUmlnWoTjTEnPtxEj6Qi+k6qNQ4x5kTHxRQlmslkQm5uLjIyMhAIBBAIBNI+FjHmDCSSOEwg02iIjdBsNlvU14g+22ptycSYM9DgBLLaCylInWQ/2rOzs/G9730Pv/71r7Fjxw588sknuO222zBjxgwsWrQo9Lq5c+fiySefDH39y1/+Ev/617/Q0NCAjz76CCtXrkR/fz9uuOEGGf4Vsfn9fvT19UGr1SIjIyPm5mhEwFdXxaNVqfOENXpqiDmxhFcgq3VCTNJgHIqPmmJORUUFioqKmECmhNNoNFi9ejXmzZsHjUbDu2rCqCXmiApkbqJHoxFPBfLixYuxatWquJKoaqaWmMMKZEq0SZMmYf78+YpuyyT7JnoAsHbtWuh0OqxatQoulwuXXXYZ1q9fP6CSoK6uDp2dnaGvT506hVtvvTV0q8ScOXPw7rvvoqysTI5/Qkw9PT0IBoPIzMyEVquF0+kEwAQyRTfcpEZMlpm4GZ10jzmxaLVaGAwGeL1eeL3eUEUy0UgxgRw/tcScadOmwel0cjFFSWMwGOB2u+H1eofsF6Fmaog5bGFBYyEKumK1lMzNzUVxcXGyhpTS1BBzolUgc85DUtHr9TAYDKHzmxIpYmQmkwnr1q3DunXror6mq6trwNfPPvtsooclme7ubgBAVlYWAODKK69ET09P6GuiwYarUucJa2zSPeYMRySQPR4PE8g0amylEz+1xBze1UDJptPpEAwGmUQcRA0xhy0saCx4R7C01BBzJk2ahO9+97toaWkBwApkkp44lpQ8n1ZEAjndif7HImFcUVEh53AoBQzXwuKiiy5CRUUFSkpKkjksShNcdJEU1N4DmYbq6OgIzXmIEm3z5s3YsWMHysvLeT5TIc5laCxEAjlWD+RPPvkEdXV1mDdvXsSNqUldrFYrrFYr3G43AN6JR9I7deoUPvvsM+Tl5WHJkiVyDyciJpCToKenBwBYcUxxG66FRUlJCZPHNGrcSI+kIK6Oc+JMwr59+9Da2qroyglKHxqNBhqNBj6fjz2QVYgtLGgs4umBfPLkSbhcLkyfPp0JZIqKFcgkFafTia6uLkUXYzCBnAThFci9vb3YvXs38vPzMW3aNJlHRkrF26potC677DJceumlMatCmUAmKbACmQbj7ZyUTBaLBVqtlglklWIFMo1Fb28vgNg9kMUFclFpSup2+PBhNDc3w2QyobKyknMeUiWWDSVBeAK5q6sL77//Pj7++GOZR0VKNlwLi8OHD+ODDz7AmTNnkjksSgF6vR5GozFmUk8surjgprHgrXs0GBdRlExmsxk6nQ4xghHNAAAgAElEQVQ+n49JRBViAplGKxgMDrvWAlKjHyklT0NDA/bv3w+73Q6A82CSnjiWlBxzWIGcBOEJZJfLBYCVpRTbcLdVHTp0CMeOHUNBQQFyc3OTOTRKA2LRxQpkGgtuokfRMJFMyWA2m6HVauH1enlBVIWYQKbRcjqdCAQCMJvNoVYokYhzGSuQCfhq3SRiDyuQSY14uSQJRA/kzMzMUNN1JpApluFaWPCKJ0Vz4MAB/OUvf8EXX3wR9TWsQCYpMA4RkZxEAtnv9zOJqELsgUyjFU//Y4AtLGggsW4S6yjOgylRlFyBzKM9wVwuF1wuFwwGAywWC5xOJ4CzfduIIgm/rYoJZBqpM2fO4OTJk6ELV5GIHshMINNYsAKZiOQU3gOZSUT1YQUyjVY8/Y8BtrCggUQFsrh4xQpkkloqxBy2sEgwkcTJysqCRqMJtbAY7oRF6uLz+bBlyxa8++67aGpqQkNDA/R6PU6cOIGrrroK1dXVA26xEokbnrBoNLiJHkmBm+jRYFxMUTIVFBRgzpw5aGho4AVRFRIJZHEuIopXPP2PgbPr94yMDJhMpmQMixSOFciUaFarFfn5+cjJyZF7KFExgZxg4f2PAbACmQbw+/1Yu3Yttm7diqNHjw5ZANXX12Pjxo1Yt24dli1bhvvuuw86nY6VfzQm7IFMUhDJQk6cSfja176GL7/8MhRjiBIpJycH06dPR3d3NxPIKiTmwKxAppESrQKHSyDPnz8flZWVyRgSpQD2QKZEKy4uRlVVFSZPniz3UKJiAjnBBieQdTodTCYTeyATmpqasGrVKtTU1MSc/Ho8Hhw+fBh1dXXYuXMnNmzYwCueNCbsgUxSEFVfjEMkWK3WUF9aomRgElG92MKCRiveHshE4bKzsxEIBEJ3cjKBTGrEBHKCiQRyZmYmAGDJkiWorKxUdF8TSrympiZcd911qK2tjfs9Pp8P+/fvx3XXXYfvf//7MJvNrECmERGtUl5++WXU1tbijTfeQGFhIUpKSiK2SiGKhXdC0GBcTFEyBYNBnDx5EqdOneIFURViAplGS/RAttlsMV8XDAYRCASg0Wh4XiNcf/31AIC6ujoAbClJ0vP5fKE91JSKmYIEG1yBLDDQqJff78dNN90UNXn8wgsv4IorroDVakVrayseeughPPPMM6Hna2tr8dprr2Hbtm1M3FBcYrVK+eKLLwAgYqsUoliYQKbBPv30UzQ1NTGhQ0mh0Wjw0Ucf4fjx44pebFFiiAvejDc0UvFWIO/atQsbN27ENddcg1mzZiVjaJRCeNGcpNbc3IyPPvoIJpMJ1dXVcg8nIiaQE0wkkLOzs2UeCSnF2rVrcfDgwZjP33LLLfB4PJg6dSp27NiBmpoaHDhwIPSagwcP4sEHH8T999+fjCFTCikqKsL06dORn58PAGhtbcUPf/jDUbVKKS0tTdawKQWxlQ4N1tbWhjNnzvAuK0oas9kM4KueppT+XC4X1qxZgzfffBOnT59GMBjE//7v/yI7OxtLly7FmjVrQscFUSTx9kAWiUEx3yH1ipQs5jyYEkXJ82gmkBMsvAK5v78ff/7zn1FZWYmVK1fKPDKSg8/nw9atW2Mm8kRFKHA2eASDQVRUVAxIIPt8Prz55pv4+c9/zpYDNMB5552H8847D8DZVin/7//9P9TX18f9/vBWKRs3bmQSmQYQC/d33nkH7e3t8Pl8MBqNGDduHBfuFMJqHEoWUUEoNqmm9OXxeFBdXY2amhq43e4Bz7ndbpw5cwbr16/Hhg0bMHv2bGzZsiXUq5QoXLwJZJEYZAKZnE4nHn30UWRmZuLqq68e8BznPCQ1JSeQebkkgYLBIHp6egCc7YHc398Pt9vN2+xUbMuWLTh69Oiwr3vsscfQ19eH2tpatLS04K233hrymi+//BKvvPJKIoZJaUC0ShkueTxlyhQ4nU688MILAx6vra3FTTfdFNoojdTN4/Fg6dKlKC8vx/r169HQ0ID+/n54PB709vaioaEB69evR3l5OZYuXRraqZrURckTXkpPIoEsbkmn9LR//35MmjQJe/fuHZI8HsztdmPv3r2YNGkS9u/fn6QRUqoIBoMjrkDmuY08Hs+Q44AVyKRGPNoTqK+vD36/HxkZGTAYDKHJrcVikXlkJJd33303ro1e7rjjDmRmZuLSSy/Fpk2bIk6W/X4/duzYkYBRUirr6+tDZ2cnHnjggZitUoTHHnss6gJLtEohdePCnUaK1TiULGJOzQrk9LV//34sW7ZsxG1K+vr6sGzZMp6LaAC32w2/3w+j0RjaiDEatrAgQazfw+9qYA9kkloqXLRiAjmBBm+gJxLIw13tpPTV0tIS92sDgQB2796N0tJSrF69OuJrWltbpRoapYm9e/di/fr12Lx587Aby3znO99BV1cX/vGPf0R8XrRK4QY16sWFOw3H5XLh3nvvxaxZs/CPf/wDBw8exPz58zFr1izce++9vOuKEootLNKbx+PBtddeG/GuFpvNhiNHjsDr9SIQCKC/vx+//OUv434/qVO81ccAW1jQV0QMCU8gswKZpJYKFyN4tCfQ4ASymNyyAjl9iduiWltbcfToUdTU1GDnzp1488038dJLL+HEiRMj/p56vR4VFRURn2NijyKpra1FU1NTzNdkZmbigQcewF133RXzdceOHcOWLVukHB6liOEW3q+88gp6e3sRCARQV1c34vdTaovU1sTn8yEQCMDhcLCtCSWF1WqFRqPh8ZWmqquro17ANJvNaGlpwaJFi6DX6/HQQw/hgQcewCWXXDLgdX19fVi+fHkyhkspQBxP4uJTLKxAJiFSApkVyJQoSo453H0rgQYnkEdyxZOUJxAIoLe3Fz09PVH/9Pb2xkzqDtdPtqCgAEuWLMGbb74Jp9OJK6+8EjfccANuuOGGiK/n5iAUyfHjx4c91n7zm9/gmWeeQXNzc8zXeTwevPfee1ixYoWUQ6QUEGvhDgD19fV49NFHUV1dDZPJFPE1YuH+9ttvJ2qYJIP9+/fj2muvjasyPbytyebNmzF37twkjJDUYuHChfjyyy8xbtw4uYdCEnO5XKipqYn6/OnTp7F48eLQ12vWrMHPfvYzLF++HLt37x7w2gMHDsDlcnGTVwqdt2w227CvnThxImbMmIGSkpJED4sULlYCmRXIJJWioiLMmDED5557rtxDiYoJ5AQK30APYAWykvl8vpiJYYfDgb6+vrj60VgsFthsNmRmZg74k5WVhdraWjQ2NkZ9bzAYxOrVq7F+/XpotVo0NjbiJz/5Cd54442Ir+eEhoCzx++WLVvw7rvv4vPPP49YDRpu5syZuPLKKzF79uy4vv+hQ4fwzjvvQKfTQavVDvkT/rhOp4NGoxnyWDzv02q1A947+H28wp88wy3cAeDee+8FcDaBU1xcHPV1XLinF9HWZKQVn6KtydatW5lEpjFzuVxYs2YNtm7dio6ODgSDQaxduxbZ2dlYunQp1qxZw5iT4tasWTNs3/1wM2bMgNlsxj//+c8hz7ndbqxZs4b7OlCopWSsCmQxr964cSP6+vrg8/mg1+tRUlKCq666CtXV1dDrmUZREzHnCe+bLapEuT6hsRIx54UXXsDJkyexa9cuvPLKK4qMOcoYRZoaXIE8ZcoUdHZ2orS0VM5hqY7b7R6QCBaVwuEJ4nh279ZoNEMSw+FfZ2VlwWazxawKrq6uxltvvRV14X369GksWrQo7n/bJ598gtWrV+Oqq65CVVVV3O+j9OD3+7F27Vps3boVR48ejWuDRgBYtGgRJk6cGGqpYrPZoNPpMH36dFx00UVDXt/V1TVsMjEZRpqQHmkiu6WlBadOnYJGoxnw+Ej+vmiJ8eHepzQjXbjHwoV7+ojVluSVV17BsmXLkJGRgWPHjqGysjLq++vr63kHDY2Kx+NBdXU1ampqhsQot9uNM2fOYP369diwYQNmz56NLVu28FhLUe+8807crzWbzdi5cycOHz4c9X3btm3jeYjQ29sLIPIdwfHMqzdu3Ih169Zh2bJluO+++6DT6RI+ZpJHeIFOY2Mj+vr6sH37dhQUFOC6665DQUEBACaQafREzHnzzTdRV1c34A7iw4cPAwBeffVVPPTQQ/jGN76hiJij6erqUu4Wfynu2WefxY4dOwCcTSb7fD54vV5MnjxZcVcSlKiuri7iAlQIBoPo7+8fkBAWCeLwlhLxJEG0Wm0oGZyVlTWkelg8N9ZfWJ/Ph4ULF4YCglSMRiNKS0uxYsUKRQQWSrympiasWrUKNTU1I+6FbbFYQhe2AOCnP/0pJk6ciNWrV+P06dNDXj9nzhw89NBD8Pv9CAQCCAQCof8PBoMRHw//M9r3DX480ex2O/Ly8hL+9wwWKfEcb5V2PAnu0bxvxYoVOHXqVFzj37VrF4qLi2PG60mTJiniIgSNzdKlS7F3796Izz344IMIBAKhliaxjocFCxawrQmGn+fQQJs2bcKPfvSjEW3qabVa2TolRU2aNAlnzpwZ9nVarRbHjx+HxWJBeXl51I07bTYb/uu//gtWqxUZGRmwWq2wWq2w2WywWCyYMGFC6GKD2+2GRqOBwWBIq+SQWmNOeCLw0KFD6O7uRkFBAaZOnRpak7e2to5oXq3X6zF79mxs2LCBxWFpJp4LCUajEcXFxRg/fjx+9rOfDWinQ19Ra8yJR1NTE2666SYcOHAgrnWuVqvFhRdeiOeee07WmMMEcgKIoPP888/j9OnTEQ8Io9GIiooKXr2MIhAI4JNPPkFhYeGo+w0LBoNhSEJ48B+xCUsy/Pa3v8V///d/J2QDPE5m1KGpqQnXXXcdamtrJfl+v/71rzFlyhR873vfi/j8jTfeiMcff1ySv2u0gsFg1IS0eG6siewTJ06gpKQkZiJ7LAnwaOOQ+nMKH1v43xUMBpGdnR16bWtrK7xe75Dx+P1+bNu2Le4WBfEkkHNzc1FfXz/mfx/Jx+Vyoby8fNiLsvEcDyaTCY2NjapvMcCFVfz279+Pf/u3f4v7TptwRqORrVNSUFlZWehuzlhED+zJkyejq6sr6usMBgPmzZsX8TmNRoNLL70Uubm5MJvN+Oyzz9De3g69Xg+z2Qyz2QyLxQKz2YyysjJcccUVMJvN0Gq1+OCDD2CxWGAwGGA0GmE0GkP/X1JSEuq163a7EQgEYDQaZVv3qS3mxJsInDBhArq6utDZ2Tniv2Pq1KnYuHEj111pYqQFOhqNBueeey6PgSjUFnPi1dTUhOrqahw/fnzE7508eTK2bNki2/HG8lcJ+Xw+bNiwAQ8++OCwJyCPx4PDhw+jrq4OO3fuVFXCT/QbdjgcETelE/2GOzs7h60GjNVvWDxuNpsVVT1w3333YefOndi/f7/k39vn82H//v247rrreCJLU36/HzfddNOwyeMpU6bg0KFD+Nvf/hY1MSz813/9V9TnjEYjrrzyylGNVUqielan0w3oPyal3NzcpE5yent70d/fD4/HA4/HA7fbHfpjMpkwceJEBINBOJ1O/Otf/wq9Tvzxer3wer2YN28ezjnnHAQCAXz88cf4+OOPQ4lk8UcsWq+55prQ11u2bIHH4wl9ncjdpKVOlFPysa0JyUW0PomU/LHZbPjoo49QUVEBnU4Hl8uF3/3ud/jtb3875P1snZJa4kmyfvbZZyguLsaUKVNiJo+Bs/OZJUuWwOl0or+/Hy6XC06nEy6XK3RetdvtAICOjg7Y7faIRUC1tbWhDYg9Hg/27dsHrVYLvV4PvV4PnU4X+v+FCxdiypQpMJlMqK2txaeffgq9Xg+j0QiLxQKLxYKMjAxkZWUN2DB7x44d8Pl8A5LS4n2FhYXIz88HAHi9XrhcrlDSmpt5fSXeRKDH48GxY8ciPvfCCy/giiuugNVqRWtrKx566CE888wzA15TW1uLm266Cdu2bWNBWIobTYFOMBhEbW0t194UN7/fjxtvvDFm8jjWOv748eO48cYbsX37dllijiISyM899xz+9re/4dNPP4XD4cAnn3yC8vLyYd/3+uuv43e/+x3q6+sxadIk/PKXv8Q3v/nNJIx4IHF187XXXot6Aoom3RJ+kfoND+45HG+/YYvFgpKSklH3G1YqnU6HDRs2jKmCdLgJDSczsaVyzFm7di0OHjw47Osee+wxSS5SVFRUoLq6eszfJ1X4/X54vV74fL4BO3SfPHkSTqczlLT1+XyhJO748eMxZcoUAEB7ezu2b98eel34671eL2655Rbk5uYCAN57772o7WzKysowa9YsAAj1lI2msLAQ06ZNA3A2Kd3S0gKDwRBabIr/t1gsuPzyy0PvM5vN8Hq90Ov1MBgMA/7s3Llz2Apko9EYqsDSarXIysoKLcQHU3scSuWYI4ykH2k82I+U4lVdXR21bYXZbEZLSwtuueUWfPDBB/jVr36FBx54ANu3b8fu3btDr+vr68Py5ctV0zolHWJOdnZ2zBYWCxYswIwZMxAMBtHa2hp6/PHHH8edd9455PWFhYW4++67I34vn88XuoDr+v/t3XtwVPX9//HXZjd3QhICEkIQEAQCcodatE41giKXoGhBih3QegFv1dGpKM4Y+3UweKm2juIVqLZMx6kUA0hRFJECVeSqIsglRqIYIBCQkBiy2d8fzDm/3eTs5uTCXp+PmR2S3U/OfnbJvvM57/M+71NTY96qq6vNg73Gv8YF1WpqalRVVaULL7zQPJun4W3//v06fPiwpLPJqbKyMvPMKW8pKSmqqKhQcnKyEhMTtXbtWtXX1zdKSLtcLo0aNUq/+tWvlJiYqLKyMp8LbRsJZ+PfG2+80ez1u3nzZn355Zc6ePBgo2rpjIwMcx+0vr5eJ0+eNB8P12s1BNJWZ+o9+eST+v3vf6/a2lr17dtXH3/8sbZt26atW7f6jNu+fbuKioo0d+7cVj1fJIv0mNNUgY6dfe+CggJt2rRJiYmJwZo2ItC8efO0c+fOgGMWLVqkhIQEXXrppZaP79y5U08++aQeffTRczHFgMIigXz69Gnl5+dr3LhxeuSRR2z9zGeffaZbbrlFDz/8sCZOnKjly5ebCbMRI0ac4xn/f8bRza1bt9qqsPJ3NCHcE37e/YaNhHDDfsM//fSTrVOe4+LizIRwoH7DBw4ciNpTHnJzc/XOO+9o5syZ2r59e7PbWdhZ0LCY8S9SY05dXZ1WrlzZ5O/L1KlTVVlZqY0bN5qJzZZwuVyaMGFC2PRq93g8ZiLW++Z0OnXeeedJOrsA3Llzp86cOaPa2tpG44cMGWIuaL/44gtt2LDBTPAeOnTITO7Gx8frwQcfNJ971apVfs8sGTFihPk+19bWBjyi7F1B1759e3Xs2NFM8Bo7dC6XSx07djTHxcfHa8yYMT4JYe8EsXc/65EjR/o9RbehSy65xO9jmZmZOnHiRMCfX716tc9FP0+cOKGPP/7Ysg9cRkaGrTlFq0iNOd6a+n1oriNHjmjDhg0+/beNfuDG197ft3SMUZHX1JhIS5DEipqamoD9048ePeoTcwoLC/XHP/5RkyZN8kkgS9LWrVtVU1MTE61ToiHmjB07Vi+//LLfxzdt2tSsz+3VV1/t9zEjOWt1YbWmGGuTmpqaRglo4/uff/5ZgwcPNr8/ffq0qqqqdPr0aZ0+fVr19fXmvpQkpaWlqa6uzkxE19TUmF9v3LhR33zzjSSpoqJC+/fvN9+H+Ph4n4RzTk6OeTbm2rVrtXfvXn3zzTc+iWmn06l+/fqZCeSTJ09qwYIF5uuLi4vzSUqPGzfOHLtr1y6zst97THx8vFJSUnz2444fPy6n02mOPVfV0oESgXYqir3t2rXL/No4o6tXr16NEsh1dXVasWKFHnroobBZMwdbpMecpgp07Ox7HzhwQAMGDNDMmTNpUQpLdXV1Wrx4ccAxU6dOVe/evXXw4MGA4xYvXqw5c+YEPeaERYS78847JalZF9hZsGCBLrvsMnMHv2/fvlq/fr0WLFgQ8A9BW2rJ0c1AVYGhSvjV19dbtpJoeLOTIG/Yb9i7lUQo+g2Hs9zcXLMCa8WKFdq/f7/tnqN2FjQsZvyL1JhTXFysffv2BRyTlpamP/3pT8rPz9ett97aqucbOnSo5syZ0+yfq6qq8mmx4H1LT09X165dJZ1NSG3ZssVvsregoMBsY7Nq1Srt2LGjUdWOJOXk5GjGjBmSzp69EKhSsnv37mYCua6uzqe6yePxyOFwmDs/xvfS2YrgDh06WCZ7c3JyzG107NhRU6ZMaVT96z3ekJ+fr/z8/Cbfz7i4ONsL6baKrU3tuEtq1gVDAu24x4JIjTne2roNSW1trT755JM23WZrWCWjje8bJq3basyPP/6okpISvz/vbzuBxlg91haJ+FCt25rbOmXAgAFKSkrSRx991OixWGqdEg0xp7CwUIsWLWqT1jmJiYkqLCxs/aQsGBfbM/aBmsvj8ai2trbJBLTV44mJiWY7C+/rQRi3bdu2mZ/dY8eOqba2VidPnjQfN65/UFFRofLyciUlJamurk7fffedz+vzroA+dOiQWSl98OBBv5V0HTp08EkgL1y40Gc/x3uddOmll2rw4MGSzp7xtW3btkZJaePrvLw8MzFntC3xXmMFSgTarSj29uKLL2rmzJlKSUnR1q1b9d5771mO279/v4qLizV58mS/24pmkRxz7BTo2D2YcPToUT333HMx16IU9ixbtixgq9u0tDQ999xz2rx5s9LS0gJW8R89elTLli3TDTfccC6m6lfEZpU2b96s22+/3ee+K6+8Uq+++mpQnt9OH9KG1cZNVQWei4Sf3X7DVkmZhpKTkxu1kjCSxMb94dZvONw5nU7NnTtXDz30kIqLi7VmzRrt2LFDX331VZM/a2dBE+uLmbYU6pgjSR988EGTFxD6v//7P73xxhtmf76W6tatm+bPn28u0r/99lu/yd66ujr94Q9/MD/7b7/9ts/ppN4GDx5sJpCrq6v16aef+p1DdXW1+XVcXJw8Ho9luwXvXunGFWqNHZ2GY72Tvf369VP37t3NcaWlperbt69lDBs7dqyt9y0pKUm9evWyNTacRcqOezQLh5jjralKmua0NDHGX3LJJT4XefS+2KT39959us/FGOM+4/5gOXbsmMrLy4P2fK0RKMkcKHne0jHGfUuXLrU9x6SkJK1bt05ff/213wOJtE7xL9xiTlJSkoYOHar//e9/rd7WsGHDwrby3OFwKDExscWnvdfX11u237BKPJeWlio9Pd3nfmNd6X1A/fzzz/fZfsOL7Bp/D3766SfV1NTI5XIpLi5OTqfT/OyePHlS69atM1+bsb9p7HMaa0iHw+FzgLKioiLgflBeXp75dXFxsc961+Px6G9/+5vfRKDdJKC3u+66S/fcc49GjRqlyy+/3O+6qLa2VmvWrGGfqxnCJebYKdCR7B9McLvdUdWiFPKJXd7/GsVGRu7O4/GYMcJqfFMHRubPny+Xy6XZs2fr73//e5PzWrRoEQlku8rLy9WpUyef+zp16mT2mTrX7PQh9a42tlsV2JyEX1v2G26YFI6WfsORwuVy6brrrtN1112nO++801YC2c6ChsVM2wl1zJGkQ4cOBXx88ODBGj16tIYOHdri53A4HMrOztaECRN8EiknT540T5m0YlzsRZKZOGrYaiE+Pl5dunQxf6Z9+/a64oorGiV5jfHebRxGjx6tMWPG2Drl0W61q3EBG0Mk9vk7V2Jlxz2chUPM8dZUP9LmtDSRzr4W757coRYo8WzcJDU5xjsR3dSYb7/9Vrm5ua3ajp3EuL9EenPHBDvBLp3922NHXFycdu/eLbfbreHDh/sd19SF1mJZuMUc6Wxip2fPnn57YNuRmpqqd999tw1nFV7i4uIarWf82bt3b6P2gP76PzdV/fzzzz/L6XT6PTulrq5OGzduNL/3vgCyEUuMNmTr1q3T1q1blZiYKLfbrbS0NLlcLp+zKIzbkSNHlJSUpKSkJKWmpio9Pd0sbvjiiy+avJC93SSgt/r6em3YsEE33XSTZs+erRdeeMFyXFPrdPgKl5hjp0BHarzv/corryg/Pz9gX+Trr79eTz/9tBwOh5lIHDFihFJSUiSdPahx+PBhy2RjRkaG+fesrq5OH330keU4SRo0aJBZoHPgwAHt2rWrUaJTOruvM2HCBJ/XbrTOaTj+wgsvNK/HcvjwYfPMHqs5TJgwQenp6ZKk9evXq6SkRNLZ/2OjzaDH41Hnzp11zTXXSDqbp3jrrbcsn1s6e6amUXS5fft2bdq0yfK54+Pjdccdd5iv6c0331RlZaVl0nfYsGHm2vO7777T22+/bfncHo9Ht912m3mGR3Fxsc8BKG/dunXTTTfdZL6m5557znKcpID70oMHD9aUKVP07LPP2i4Ea+7119rCOUsgP/HEE3rmmWcCjlm+fLkuu+yyczUFS3v37m31Nurq6rR06dKApzk0rDa2WxVYW1urf/3rX+rdu7eqqqpUWVmpU6dOqaqqqtHN7XabRzvq6+sbVfkYR0SSk5PVoUMHpaenm+0jHA6HUlJSlJycbFYMeTweOZ1OZWdnm9s4cOCAuTAwPlTGLSsry+wXevLkSR06dKjRGOPn+vXrZ8513759OnXqlOW4zMxMs3qvpqZGb731luU4j8ejgQMHmn019+3bp4MHDzYa4/F4lJKS4tOAfM2aNTpz5ow51nvHqH///magKisr0+bNmy236fF4dO2115pJ9Y8++sisuGw43/PPP98MVCdOnNDSpUv9vk/jx48P2D+1ITsLmv3797fJ770doexZHc0xx9DUjvTll1+uHj16mKcetmvXTk6nU/379w+4Qy2dXVB07NhRAwcO1Lhx45SYmKjq6mpz/nV1dRo+fLhPZa/3KY0lJSVm8nXQoEEBn8v7PTH+MBs8Ho9ZldKaHcaWCtZnJRI8++yzGj16tE8leHMlJ/f4PCoAABdXSURBVCfrmWeeOWfvKzGnsXP1Xv/yl7/Ut99+6/fx5rQ0kaSLL744Jj5vDodDTqfTsoJ7wIABIZhRy1glmSVZJpi9/w10n78x3tu1e1Bv9+7dat++vS644ALV1NT4HXfmzJlW/d4Rcxo715/jF154QXfccYetBE9D8fHxeuGFF1RaWnoOZhaZ7Px/GQf0vS8mbMXj8cjtduvnn39WbW2tmYiura01v/f+12qMx+NpVo9974sPG+1DEhISlJiYqJKSkiYPctmtKLbicrkCnmV24sSJNv88EHMaa+v3uKX73qWlperRo0fAlijffPONHnvsMZ9WdMnJyWYOY/369X6rn7Ozs83rnJw5c0YffPCB33l5PB6zcHDHjh1+z/B0uVzq27ev+f2nn37q9/NXXV1t9oX/4YcftGXLFr/P36dPH/M17dq1y+c1eR8QqKioMHMtZ86c0e7du/1u0zjALp3N9fj7f3K5XD6/E999953f15SVlWWO/eGHH/Tjjz/65GS81yVbtmxRWlqa3G63vv76a5WWllrmpI4fP65ly5bJ7XartrZWe/bs8VnLeP9rJOutTJ8+XZmZmbr33nt17733qkOHDoqLi9OWLVv87sdXVVUFPeacswTy7NmzNWXKlIBjWlPO37lzZx05csTnviNHjphHOPxpiyC8dOnSgE2tG1YbZ2ZmaujQobarAr/66iutXLlS0tmLPPn7AHTu3FkXX3yx0tLS5HA4tG7dOrNHVGJiovm1JN14443q0aOHJGnt2rV+q8oyMzN9/gisWLHC70L8iiuuMN/PXbt26YsvvvD7mq655hqzAm3z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\n",
      "text/plain": [
       "<Figure size 1440x576 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = sequence_pred(sbs_seq_transf, full_test, test_directions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "wrS6ODOQNwUI"
   },
   "source": [
    "## The PyTorch Transformer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "KEKEUT90NwUI"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/sublayer.png?raw=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {
    "id": "SudS3VazNwUI"
   },
   "outputs": [],
   "source": [
    "def encode_decode(self, source, target, source_mask=None, target_mask=None):\n",
    "    # Projections\n",
    "    # PyTorch Transformer expects L, N, F\n",
    "    src = self.preprocess(source).permute(1, 0, 2)\n",
    "    tgt = self.preprocess(target).permute(1, 0, 2)\n",
    "\n",
    "    out = self.transf(src, tgt, \n",
    "                      src_key_padding_mask=source_mask, \n",
    "                      tgt_mask=target_mask)\n",
    "\n",
    "    # Linear\n",
    "    # Back to N, L, D\n",
    "    out = out.permute(1, 0, 2)\n",
    "    out = self.linear(out) # N, L, F\n",
    "    return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "id": "mT4DINoSNwUJ"
   },
   "outputs": [],
   "source": [
    "class TransformerModel(nn.Module):\n",
    "    def __init__(self, transformer, input_len, target_len, n_features):\n",
    "        super().__init__()\n",
    "        self.transf = transformer\n",
    "        self.input_len = input_len\n",
    "        self.target_len = target_len\n",
    "        self.trg_masks = self.transf.generate_square_subsequent_mask(self.target_len)\n",
    "        self.n_features = n_features\n",
    "        self.proj = nn.Linear(n_features, self.transf.d_model)\n",
    "        self.linear = nn.Linear(self.transf.d_model, n_features)\n",
    "        \n",
    "        max_len = max(self.input_len, self.target_len)\n",
    "        self.pe = PositionalEncoding(max_len, self.transf.d_model)\n",
    "        self.norm = nn.LayerNorm(self.transf.d_model)\n",
    "                \n",
    "    def preprocess(self, seq):\n",
    "        seq_proj = self.proj(seq)\n",
    "        seq_enc = self.pe(seq_proj)\n",
    "        return self.norm(seq_enc)\n",
    "    \n",
    "    def encode_decode(self, source, target, source_mask=None, target_mask=None):\n",
    "        # Projections\n",
    "        # PyTorch Transformer expects L, N, F\n",
    "        src = self.preprocess(source).permute(1, 0, 2)\n",
    "        tgt = self.preprocess(target).permute(1, 0, 2)\n",
    "\n",
    "        out = self.transf(src, tgt, \n",
    "                          src_key_padding_mask=source_mask, \n",
    "                          tgt_mask=target_mask)\n",
    "\n",
    "        # Linear\n",
    "        # Back to N, L, D\n",
    "        out = out.permute(1, 0, 2)\n",
    "        out = self.linear(out) # N, L, F\n",
    "        return out\n",
    "        \n",
    "    def predict(self, source_seq, source_mask=None):\n",
    "        inputs = source_seq[:, -1:]\n",
    "        for i in range(self.target_len):\n",
    "            out = self.encode_decode(source_seq, inputs, \n",
    "                                     source_mask=source_mask,\n",
    "                                     target_mask=self.trg_masks[:i+1, :i+1])\n",
    "            out = torch.cat([inputs, out[:, -1:, :]], dim=-2)\n",
    "            inputs = out.detach()\n",
    "        outputs = out[:, 1:, :]\n",
    "        return outputs\n",
    "        \n",
    "    def forward(self, X, source_mask=None):\n",
    "        self.trg_masks = self.trg_masks.type_as(X)\n",
    "        source_seq = X[:, :self.input_len, :]\n",
    "        \n",
    "        if self.training:            \n",
    "            shifted_target_seq = X[:, self.input_len-1:-1, :]\n",
    "            outputs = self.encode_decode(source_seq, shifted_target_seq, \n",
    "                                         source_mask=source_mask, \n",
    "                                         target_mask=self.trg_masks)\n",
    "        else:\n",
    "            outputs = self.predict(source_seq, source_mask)\n",
    "            \n",
    "        return outputs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "S4R3-nGxNwUJ"
   },
   "source": [
    "### Model Configuration & Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "id": "Kq1DO_7kNwUK"
   },
   "outputs": [],
   "source": [
    "torch.manual_seed(42)\n",
    "transformer = nn.Transformer(d_model=6, nhead=3, \n",
    "                             num_encoder_layers=1, num_decoder_layers=1,\n",
    "                             dim_feedforward=20, dropout=0.1)\n",
    "model_transformer = TransformerModel(transformer, input_len=2, target_len=2, n_features=2)\n",
    "loss = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(model_transformer.parameters(), lr=0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "id": "FT_3rWblNwUK"
   },
   "outputs": [],
   "source": [
    "for p in model_transformer.parameters():\n",
    "    if p.dim() > 1:\n",
    "        nn.init.xavier_uniform_(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "id": "2h8ZHESHNwUK"
   },
   "outputs": [],
   "source": [
    "sbs_seq_transformer = StepByStep(model_transformer, loss, optimizer)\n",
    "sbs_seq_transformer.set_loaders(train_loader, test_loader)\n",
    "sbs_seq_transformer.train(50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 289
    },
    "id": "xqQkl4IrNwUK",
    "outputId": "0da6f28b-d24a-4c06-e6ac-44429e845bf7",
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAEQCAYAAAC++cJdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3xTVRvA8d/NaNp00ILsvZE9ZO+hZYgsCwVFkL1FeVE2oiCgoGxEEJENBYSXF9mrjIIoKgjKENlDRmeaNPP9oxKILdCdtjzfzycfyLnrSU9v89xzzz1HiYiIcCCEEEIIIcRzQuXuAIQQQgghhMhIkgALIYQQQojniiTAQgghhBDiuSIJsBBCCCGEeK5IAiyEEEIIIZ4rkgALIYQQQojniiTAQgghhBDiuSIJsBBCCCGEeK5k+wR4x44dvPTSS1SvXp3ly5e7OxwhhBBCCOFm2ToBtlqtjB07lv/+97+EhoYyZ84cHjx44O6wnC5cuODuEEQakzrNfqROsx+p0+xH6jT7Se86zdYJ8E8//US5cuUoUKAAPj4+tGjRgn379rk7LCGEEEII4UaZOgE+cuQIwcHBvPjii/j7+7Nq1aoE6yxZsoTKlSuTN29eGjduzNGjR53Lbt++TYECBZzvCxQowK1btzIkdiGEEEIIkTll6gTYYDBQvnx5pk2bhpeXV4LlmzZtYtSoUYwYMYLQ0FBq1apFUFAQ165dc0O0QgghhBAiK1AiIiIc7g4iKQoWLMinn37KG2+84Sxr3rw5FSpUYM6cOc6y6tWr065dOyZOnMjx48eZM2eOs+V41KhR1KhRg6CgoCceR/oRCSGEEEJkbaVLl37qck0GxZHmzGYzv/zyC0OHDnUpb9asGcePHwegRo0a/P7779y8eRM/Pz/27NnD+++//9T9PusHlpYuXLiQoccT6U/qNPuROs1+pE4zhtVqxWAwZMixoqKi8PPzy5BjiYyRlDr19vZGo0lZKptlE+D79+9js9nInTu3S3nu3Ln5+++/AdBoNEyePJm2bdtit9t55513yJkzpzvCfaLISMiRw91RCCGEEGnHarUSHR2Nv78/iqKk+/F0Oh2enp7pfhyRcZ5Vpw6Hg4iICHx9fVOUBGfZBDipWrduTevWrd0dRgLXrimMG1ecU6d8OXEiGh8fd0ckhBBCpA2DwZBhya94PimKgr+/P1FRUeRIQUtipn4I7mly5cqFWq3m7t27LuV3794lT548booqaWbM0FGzpi87d+bi1i0Vc+bo3B2SEEIIkaYk+RXpLTW/Y1k2Afbw8KBq1ars37/fpXz//v3Url3bTVEljcEAJtOjSps7V8eNG/KHQgghhBAiI2TqBDgmJoZTp05x6tQp7HY7169f59SpU85hzgYPHszq1atZvnw5586d44MPPuD27du8/fbbbo786d59N47cue3O90ajwqRJ0ndJCCGEECIjZOoE+Oeff6ZRo0Y0atQIo9HI1KlTadSoEZ988gkAHTt2ZOrUqXz22Wc0bNiQY8eOsX79eooUKeLmyJ/Ozw/GjTO5lK1f78FPP6ndFJEQQggh0sPAgQPp0qVLsrZp06YNI0eOTKeIBGShcYCzG5sNatfWcvGi3llWp46V7dsNSLeprEuGV8p+pE6zH6nT9BcZGZmiB5NSymQypXoUCH9//6cu79q1KwsXLkz2fiMjI3E4HM/c/+PCw8PRaDT4+vom+3jJMXXqVP773/8SFhaWrsdJiaTWaUp/17L9KBCZlVoNw4dfY8iQss6yY8c0bNmioX17qxsjE0IIIZ4/586dc/5/586dDBs2zKXs38mYxWJBq9U+c78pSc4CAgKSvY1InkzdBSK7q107msBAi0vZhAlemExP2EAIIYQQ6SJv3rzO18Ok9eF7k8lE0aJF2bBhA23btiVfvnx88803PHjwgN69e1O+fHny5ctHnTp1WLlypct+/90Fok2bNowYMYKPPvqIEiVKUKpUKcaNG4fdbndZ5/EuEJUqVeKzzz5j+PDhFC5cmPLly7vMggtw8eJFWrduTd68eXnppZfYtWsXBQsWdM6GmxJnzpyhXbt25MuXj2LFijFw4EAiIyNdlr/22msULlyYggULUr9+fUJDQ4H4C4T333+fcuXKkSdPHipUqMCHH36Y4ljSmrQAu9nkySb27tVgtcb3e7h6VcWXX3owfLjZzZEJIYQQacffPz27RCTcd0REZCLrpc6kSZOYPHkyc+fORavVYjKZqFKlCu+88w5+fn4cOHCAd999l8KFC9O4ceMn7ickJIT+/fuza9cuTp8+TZ8+fahatSqvv/76E7dZsGABo0ePZtiwYezevZsPPviAOnXqUKtWLex2O2+++SZ58uRh9+7dmEwmRo8e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\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = sbs_seq_transformer.plot_losses()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "cSr-hYK1NwUL"
   },
   "source": [
    "### Visualizing Predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 450
    },
    "id": "F34CjIPMNwUM",
    "outputId": "f5286617-7b42-475d-929b-e17531ca5ad6"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABZAAAAIwCAYAAAAYkk49AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeVxU9f4/8NesLKNsiYriior7vmuuaCqKuGTXtJtl365o9v3mtdJHG7ZaltcyvdattFuW3sQFNTUtQRJRc7+uqIAbuAEqIzPDLL8/+J3TDMwKAzMMr+fjMQ8Yzpkznxlm3uec9/l83h9JYWGhCUREREREREREREREZUg93QAiIiIiIiIiIiIi8k5MIBMRERERERERERGRVUwgExEREREREREREZFVTCATERERERERERERkVVMIBMRERERERERERGRVUwgExEREREREREREZFVTCCThZycHISEhCAhIaHanjMtLa3anzMkJASxsbHV9nxEVPMJseqDDz6otudcu3ZttT6nJ/YBRGQdYw4RVSfGHKKaj/kcqkpMINcSmZmZePXVV9G/f380bdoU4eHhaNOmDSZPnoxvvvkGarXa000kIjtq+ndYOJjxth390aNH8eKLL6JXr16IjIxE/fr10aFDB0ybNg3r169HSUmJp5tI5BGMOVWDMYfIOsacqsGYQ+QbanqMJN8g93QDqOp99NFHWLx4MYxGI3r27Im//OUvqFu3Lm7duoX09HTMmzcPy5cvx7Fjxzzd1Gpz6NAhBAQEeLoZRE7hd9j9SkpKsGDBAnz99deQSqXo378/YmJiEBAQgBs3biAtLQ3bt2/HDz/8gC1btni6udWmUaNGOHToEIKCgjzdFPIgxhz3Y8yxjjGHAMacqsCYYx1jDtVEjJHlMZ/jGUwg+7hPPvkE77//Pho3bozVq1ejd+/e5dbZu3cv3n33XQ+0znPatGnj6SYQOYXf4aoxf/58fPvtt2jXrh3WrFmD6Ohoi+VGoxHJyclYu3ath1roGQqFgvGxlmPMqRqMOdYx5hBjTtVgzLGOMYdqGsZI6/g99gyWsPBhOTk5WLx4MRQKBdavX2812ADA0KFD8fPPPzvc3q1bt/DKK6+gS5cuqF+/Plq0aIEnnngC+/fvt/mYvXv34i9/+Qtat26N+vXro3379pgyZQp27Njh8PlMJhPeeOMNhISE4PHHH0dRURFWr16NkJAQfP311xbrbtq0CSEhIXjkkUdQWFhosewvf/kLQkJCkJubK/7N2hCzBw8eYMmSJeKwkMaNG6Nz586YPn060tLSyrXv8uXLmDt3Ljp27Ij69esjKioK06ZNw/Hjxx2+NiJnVOY7nJycjLFjx6Jp06Zo0KABevfujffeew9FRUXlHt+pUyd06tTJ6raF2nRlTzA6deqEkJAQ6PV6fPLJJ+jevbs4LPKtt96CTqez2EaXLl0AAPv370dISIh4K1vz7vjx43j22WfRtm1bhIeHIzo6Gs8//zwuX75crm0JCQkICQlBWloa1q1bh6FDh6JRo0YYOHCg1dciyMjIwLfffouQkBAkJSWVO6kCAKlUivj4eHz//fd2tyXIzs7G7Nmz0b59e4SHh6N169aYMWMG/vvf/9p8zKZNmxAfH48WLVqgfv366NixI55++mkcOHDA4fPpdDo899xzCAkJwQsvvAC9Xo9FixYhJCQEu3fvtlj3008/RUhICKKiomAymSyW9e/fH40bNxaHsNqqm3b79m28+eab6NWrFxo1aoQmTZqge/fueO6553Dq1Kly7XPl/0jegzGHMccWxhyqCow5jDm2MOYQMZ8jYD7He7AHsg9bu3YtSkpKMHHiRHTs2NHuun5+fnaXX7lyBaNHj8b169cxYMAATJw4EXl5edi8eTN2796N5cuXY9q0aRaPef/99/HRRx9BpVIhNjYWkZGRuHnzJv744w989913GD16tM3n02q1SEhIwMaNG/HUU0/hH//4B+RyOQYPHgwASElJwcyZM8X1U1NTAQAGgwFpaWkYN26ceD89PR1t2rRBRESEzeczmUyYPHkyDh48iB49emDatGlQKpXIzc1Feno6UlNT8eijj1o837Rp06DRaPDYY48hKioKubm52Lp1K/bs2YMffvgBw4cPt/ueEjlS0e/we++9hyVLliA0NBQTJ05EcHAw9u7diyVLlmDHjh3YsWMH6tat65Y2Pvfcczhw4ABiYmJQt25d7N69G59++ilu376NlStXAig9CZs1axZWrVqFJk2a4MknnxQfb34S9J///AezZ8+GUqnE6NGj0bhxY1y+fBlJSUnYuXMntm3bhs6dO5drw+eff47U1FSMHj0agwcPtjips2bNmjUAgBkzZqBRo0Z213UU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IiIiIiIiksQEMhERERERERERERFJYgKZiIiIiIiIiIiIiCQxgUxEREREREREREREkphAJiIiIiIiIiIiIiJJTCATERERERERERERkSQmkImIiIiIiIiIiIhIEhPIRERERERERERERCSJCWQiIiIiIiIiIiIiksQEMhERERERERERERFJYgKZiIiIiIiIiIiIiCQxgUxEREREREREREREkphAJiIiIiIiIiIiIiJJTCCThezsbGi1WsTHxzvtMVNTU53+mFqtFnFxcU57PCKq/4RYtWDBAqc95urVq536mK74DiAiaYw5RORMjDlE5EyMOfUPE8iNxLlz5zB79mz069cPbdu2RYsWLdCpUydMmDAB33zzDYqLi13dRSKyo75/hoUvz7p24ubw4cP429/+hl69eiEoKAgtW7ZEeHg4Jk2ahB9++AFlZWWu7iKRSzDm1A7GHCJpjDm1gzGHSBpjTu1gzGnY1K7uANW+xYsXY+HChTCZTOjZsycef/xx+Pj4IDc3F3v37sXMmTPx2Wef4ciRI67uqtMcOHAAnp6eru4GkSz8DNe8srIyzJkzBytWrIBSqUS/fv0wbNgweHp64sqVK0hNTcXWrVuxZs0abNq0ydXddZo2bdrgwIED8PX1dXVXyIUYc2oeY440xhwCGHNqA2OONMYcAhhzagNjjrSGFnOYQG7gPvjgA8yfPx+BgYFYuXIlevfubdUmKSkJ8+bNc0HvXKdTp06u7gKRLPwM145Zs2bh22+/RdeuXbFq1Sp07tzZYrvJZEJiYiJWr17toh66hpubG+NjI8eYUzsYc6Qx5hBjTu1gzJHGmEOMObWDMUdaQ4s5LGHRgGVnZ2PhwoVwc3PDDz/8IBkcAeD+++/Hzz//7PD+cnNz8dprryEyMhItW7ZEaGgoHnvsMezZs8fmbZKSkvD444+jY8eOaNmyJbp164ZHH30U27Ztc/h4ZrMZb775JrRaLR555BEUFRVh5cqV0Gq1WLFihUXbn376CVqtFs2aNUN+fr7FtscffxxarRZXr14Vr5Oa7lFYWIglS5aI01gCAwPRo0cPTJ48GampqVb9u3DhAl566SVERESgZcuWCAsLw6RJk3D06FGHz41Ijup8hhMTEzFq1Ci0bdsWAQEB6N27N95//30UFRVZ3b579+7o3r275H0LdaIqf9l3794dWq0WBoMBH3zw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xMeZM2da1TIzm812z6DPmzcPs2bNwr59+/Dwww9L1kKrGB81Gg369u1rse3w4cNISkpCUFAQwsLC7D4/oDzOV3wvCW7evImysjJxihXg3P8j1TzGnP9izCnHmEO1iTHnvxhzyjHmUG1izPkvxpxyjDlVwxrIDdwrr7wCg8GARYsWYdiwYejduzeio6Ph4+ODvLw8pKWlIT093eEb/cMPP0RsbCzef/997N69G7169cK1a9ewceNG6HQ6fPzxx2JxdwAYMmQIXn31VSxZsgT33nsvRo4cieDgYOTl5eHgwYNo164d1qxZY/Pxnn76aXh6eiI+Ph4jRozA5s2bERoaKm4fMGAAVCoV8vLyEBwcjPbt24vbhDNCeXl5GDBggOTqlpWdPHkSTz75JKKiotC5c2e0bt0a+fn52LFjB27duoUXX3wR3t7eAAB/f3989913mDx5MoYPH46BAweiS5cucHNzw+XLl3Hw4EHk5OQgKytLctFBoqqo6me4d+/emDlzJj788EP07dsXY8eOha+vL5KSknDs2DF069YNb731lsVjPP/881i9ejVeffVV7N69GyEhIUhPT8dvv/2Ghx56CJs2bar282jSpAl69+6N/fv347HHHkNkZCTc3NzQr18/9O/fHx07dsSyZcvwwgsvoG/fvhg2bBjCwsJgNBpx+fJl7N+/H6Wlpbh48WK1+wIA//jHP6BSqfDNN9/g3nvvRf/+/REREQEPDw9cu3YNqampuHTpEu6//36796NQKPDFF19g7NixmD59On766SeEh4cjMzMTiYmJ0Gg0WL58ucWOwFNPPYV9+/Zh3bp1iImJQVxcHFq0aIFr165hz549GDFiBBYuXGjzMd944w14e3vjnXfewUMPPYSffvoJzZs3F7cLOzl5eXno37+/xWMLi57eunULI0aMkPVaJSUl4c0330Tv3r0RFhaGli1b4vr16/j5559hMpnw8ssvi22d/X+kmseYw5hTGWMO1SbGHMacyhhzqDYx5jDmVMaYIx8TyI3A7Nmz8fDDD+Prr7/G77//jrVr1+LOnTvw9/dHREQEnnvuOUycONHufYSEhCA5ORn/+Mc/sH37dqSlpcHb2xv9+/fH3/72N9x3331Wt3n99dfRp08f/POf/8TOnTtRVFSEFi1aoHv37nj66acd9vvRRx+Fu7s7pk2bhpEjR2Ljxo3o3LkzgPJaN1FRURY1aARCAvjq1as2V++sLDo6GjNnzsTvv/+OpKQk3Lp1C02bNkWnTp0wf/58jB071qL9wIEDsWfPHnz++ef49ddfceDAAajVagQEBKB3795ISEiwqINEVB1V/Qy/9dZb6NGjB7788kv85z//QWlpKUJCQjBr1iz87//+L3x8fCzuv1OnTkhMTMR7772HXbt2QalUIjo6GomJicjMzKyRnRwA+Oc//4nXX38d+/btw86dO2EymTB79mz0798fADBhwgRERERg6dKlSElJQVJSEjw8PNCqVSs88MADGD16dI30AwDc3Nzw4YcfYvLkyVi1ahX27t2LQ4cOQa/Xo3nz5oiMjMQbb7yB8ePHO7yvmJgYJCcnY8mSJUhOTsavv/4KPz8/xMXF4ZVXXrFaiVehUGD58uUYOnQoVq1ahU2bNqG0tBQtWrRAz5498fDDDzt8zJdffhmenp6YO3cuRo0ahY0bN6JVq1YAgG7duqFly5bIzc21io/9+vWDm5sbysrKZMfHoUOHIicnB/v27cP27dtx+/ZttGzZEr1798b06dOtdgSd+X+k2sGYw5hTGWMO1SbGHMacyhhzqDYx5jDmVMaYI48iPz/f7LRHIyIiIiIiIiIiIqJ6gzWQiYiIiIiIiIiIiEgSE8hEREREREREREREJIkJZCIiIiIiIiIiIiKSxAQyEREREREREREREUliApmIiIiIiIiIiIiIJDGBTERERERERERERESSmEB2snPnzrm6C/UGX6uq4etFUvi+kI+vVdXw9SIpfF/Ix9eqavh6kRS+L+Tja1U1fL1ICt8X8vG1qpr68HoxgUxEREREREREREREkphAJiIiIiIiIiIiIiJJTCATERERERERERERkSQmkImIiIiIiIiIiIhIEhPIRERERERERERERCSJCWQiIiIiIiIiIiIiksQEMhERERERERERERFJYgKZiIiIiIiIiIiIiCQxgUxEREREREREREREkphAJiIiIiIiIiIiIiJJald3gIiIiIiISIrBYEBiYiLWr1+P4uJiGAwGqNVqtG7dGg888ABGjx4NtZqHNERERES1iXtbRERERERUpxiNRixYsABbt25FRkYGysrKrNqsX78eS5YsQVxcHObOnQuVSuWCnhIRERE1fEwgExERERFRnZGTk4NnnnkGhw8fhtFotNlOr9fj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\n",
      "text/plain": [
       "<Figure size 1440x576 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = sequence_pred(sbs_seq_transformer, full_test, test_directions)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "W1nna3PdNwUM"
   },
   "source": [
    "## Vision Transformer"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "QYI3KD0JNwUM"
   },
   "source": [
    "### Data Generation & Preparation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {
    "id": "cBpa0M2kNwUM"
   },
   "outputs": [],
   "source": [
    "images, labels = generate_dataset(img_size=12, n_images=1000, binary=False, seed=17)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {
    "id": "qc3DcJ3rNwUN"
   },
   "outputs": [],
   "source": [
    "img = torch.as_tensor(images[2]).unsqueeze(0).float()/255."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 206
    },
    "id": "x6dXu-7TNwUN",
    "outputId": "0b1baddb-cc0a-403a-c331-e931bd002295"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAL0AAAC9CAYAAADm13wwAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAACdklEQVR4nO3cwXGDMBBA0ZBxAfRfpTogHWSEiE3s/97VYHH4s6cdbWOM4wtCvu/+AHg10ZMjenJET47oyRE9OaInR/TkPGYe2vf92d8Bf2aM8evvJj05oidH9OSInhzRkyN6ckRPjujJET05oidH9OSInhzRkyN6ckRPjujJET05oidH9OSInhzRkyN6ckRPjujJET05oidH9OSInhzRkyN6ckRPjujJET05oidH9OSInhzRkyN6ckRPjujJET05oidH9OSInhzRkyN6ckRPjujJET05oidH9OSInhzRkyN6ckRPzmPmoeM4Tv/xtm2n34FXMOnJET05oidH9OSInhzRkyN6ckRPjujJET05oidH9OSInhzRkzO1WryyJryyjrx6Fpxh0pMjenJET47oyRE9OaInR/TkiJ4c0ZMjenJET47oyRE9OVNblitWtyVXtzOvnEmLSU+O6MkRPTmiJ0f05IieHNGTI3pyRE+O6MkRPTmiJ0f05IienKetFq+6sh7s0lhmmPTkiJ4c0ZMjenJET47oyRE9OaInR/TkiJ4c0ZMjenJET47oyfl3q8VXuCmZGSY9OaInR/TkiJ4c0ZMjenJET47oyRE9OaInR/TkiJ4c0ZPzUVuWq1wa22LSkyN6ckRPjujJET05oidH9OSInhzRkyN6ckRPjujJET05oifHavFFLo19PyY9OaInR/TkiJ4c0ZMjenJET47oyRE9OaInR/TkiJ4c0ZNjy/Imd1wae/XcT2HSkyN6ckRPjujJET05oidH9OSInhzRkyN6ckRPjujJET052xhjfWUP3pBJT47oyRE9OaInR/TkiJ4c0ZPzA4q/JD5+/b3YAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x216 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plot_images(img, title=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {
    "id": "z3sLRmR3NwUN"
   },
   "outputs": [],
   "source": [
    "class TransformedTensorDataset(Dataset):\n",
    "    def __init__(self, x, y, transform=None):\n",
    "        self.x = x\n",
    "        self.y = y\n",
    "        self.transform = transform\n",
    "                \n",
    "    def __getitem__(self, index):\n",
    "        x = self.x[index]\n",
    "        if self.transform:\n",
    "            x = self.transform(x)\n",
    "            \n",
    "        return x, self.y[index]\n",
    "            \n",
    "    def __len__(self):\n",
    "        return len(self.x)\n",
    "\n",
    "# Builds tensors from numpy arrays BEFORE split\n",
    "# Modifies the scale of pixel values from [0, 255] to [0, 1]\n",
    "x_tensor = torch.as_tensor(images / 255).float()\n",
    "y_tensor = torch.as_tensor(labels).long()\n",
    "\n",
    "# Uses index_splitter to generate indices for training and\n",
    "# validation sets\n",
    "train_idx, val_idx = index_splitter(len(x_tensor), [80, 20])\n",
    "# Uses indices to perform the split\n",
    "x_train_tensor = x_tensor[train_idx]\n",
    "y_train_tensor = y_tensor[train_idx]\n",
    "x_val_tensor = x_tensor[val_idx]\n",
    "y_val_tensor = y_tensor[val_idx]\n",
    "\n",
    "# We're not doing any data augmentation now\n",
    "train_composer = Compose([Normalize(mean=(.5,), std=(.5,))])\n",
    "val_composer = Compose([Normalize(mean=(.5,), std=(.5,))])\n",
    "\n",
    "# Uses custom dataset to apply composed transforms to each set\n",
    "train_dataset = TransformedTensorDataset(x_train_tensor, y_train_tensor, transform=train_composer)\n",
    "val_dataset = TransformedTensorDataset(x_val_tensor, y_val_tensor, transform=val_composer)\n",
    "\n",
    "# Builds a weighted random sampler to handle imbalanced classes\n",
    "sampler = make_balanced_sampler(y_train_tensor)\n",
    "\n",
    "# Uses sampler in the training set to get a balanced data loader\n",
    "train_loader = DataLoader(dataset=train_dataset, batch_size=16, sampler=sampler)\n",
    "val_loader = DataLoader(dataset=val_dataset, batch_size=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "eHqOWqX4NwUO"
   },
   "source": [
    "### Patches"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "zKVO_YStNwUO"
   },
   "source": [
    "#### Rearranging"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {
    "id": "SDxnlTwcNwUO"
   },
   "outputs": [],
   "source": [
    "# Adapted from https://discuss.pytorch.org/t/tf-extract-image-patches-in-pytorch/43837 \n",
    "def extract_image_patches(x, kernel_size, stride=1):\n",
    "    # Extract patches\n",
    "    patches = x.unfold(2, kernel_size, stride)\n",
    "    patches = patches.unfold(3, kernel_size, stride)\n",
    "    patches = patches.permute(0, 2, 3, 1, 4, 5).contiguous()\n",
    "    \n",
    "    return patches.view(x.shape[0], patches.shape[1], patches.shape[2], -1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "7UrluxHRNwUO",
    "outputId": "d993963e-9c97-4e92-a274-2b1ab591b0c4"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 3, 3, 16])"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kernel_size = 4\n",
    "patches = extract_image_patches(img, kernel_size, stride=kernel_size)\n",
    "patches.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 206
    },
    "id": "iXtVbwyJNwUP",
    "outputId": "60af95f9-1dc6-43f4-a117-5e9527cff272"
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMYAAAC9CAYAAADofgJfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAACs0lEQVR4nO3dwWqDQBRA0Vq61///yvEL0kVXhQvRoI1pzlnLRIZc3sJBpzHG7QP45fPZNwBXJAwIwoAgDAjCgCAMCMKAIAwIX1suWpbl7Ps43RjjkHVefS/sw497+2BiQBAGBGFAEAYEYUAQBgRhQBAGBGFAEAYEYUAQBgRhQBAGBGFAEAYEYUAQBgRhQBAGBGFAEAYEYUAQBgRhQBAGBGFAEAYEYUAQBgRhQBAGBGFAEAYEYUAQBgRhQBAGBGFAEAYEYUAQBgRhQBAGBGFAEAYEYUCYxhi3Z98EXI2JAUEYEIQBQRgQhAFBGBCEAUEYEIQBQRgQhAFBGBCEAeFry0XzPG9ecJqmh2/mTGOMQ9ZZluWQdZ7FPvy4tw8mBgRhQBAGBGFAEAYEYUAQBgRhQBAGhE1Pvvc8zb7d9r+m6qpPy3lfJgYEYUAQBgRhQBAGBGFAEAYEYUAQBgRhQBAGBGFA2HSIcI9HDgQ6eMjVmBgQhAFBGBCEAUEYEIQBQRgQhAFBGBCEAUEYEIQB4fBDhI/4i4OH67ru/g3el4kBQRgQhAFBGBCEAUEYEIQBQRgQhAFBGBCEAWEaY+x/2xn8cyYGBGFAEAYEYUAQBgRhQBAGBGFAEAYEYUAQBgRhQNj0wrVlWc6+j9ONMQ5ZZ57nzdde8cuyR+3Dq/8n7u2DiQFBGBCEAUEYEIQBQRgQhAFBGBCEAUEYEC7xDb5XsueYx97vBO5dn/OYGBCEAUEYEIQBQRgQhAFBGBCEAUEYEIQBQRgQhAHBIcITPXIg0MHDazAxIAgDgjAgCAOCMCAIA4IwIAgDgjAgCAOCMCAIA4JDhBdz9sHDdV13r/+OTAwIwoAgDAjCgCAMCMKAIAwIwoAgDAjCgCAMCNMYY/8bvuCfMzEgCAOCMCAIA4IwIAgDgjAgfANUnEN3it0cBAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 216x216 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plot_patches(patches, kernel_size=kernel_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {
    "id": "skMZT66YNwUP"
   },
   "outputs": [],
   "source": [
    "seq_patches = patches.view(-1, patches.size(-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 309
    },
    "id": "Wv4MDoIaNwUP",
    "outputId": "1a4f2285-757b-454a-b64e-0017fd36124d"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 252x288 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plot_seq_patches(seq_patches)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {
    "id": "wRmNuEMVNwUP"
   },
   "outputs": [],
   "source": [
    "# Adapted from https://github.com/lucidrains/vit-pytorch/blob/main/vit_pytorch/vit_pytorch.py\n",
    "# !pip install einops\n",
    "# from einops import rearrange\n",
    "# patches = rearrange(img, 'b c (h p1) (w p2) -> b (h w) (p1 p2 c)', \n",
    "#                     p1 = kernel_size, p2 = kernel_size)\n",
    "# patches.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "5mtLFtYjNwUP"
   },
   "source": [
    "#### Embeddings"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {
    "id": "Kk1XD8GlNwUP"
   },
   "outputs": [],
   "source": [
    "# Adapted from https://amaarora.github.io/2021/01/18/ViT.html\n",
    "class PatchEmbed(nn.Module):\n",
    "    def __init__(self, img_size=224, patch_size=16, in_channels=3, embed_dim=768, dilation=1):\n",
    "        super().__init__()        \n",
    "        num_patches = (img_size // patch_size) * (img_size // patch_size)\n",
    "        self.img_size = img_size\n",
    "        self.patch_size = patch_size\n",
    "        self.num_patches = num_patches\n",
    "        self.proj = nn.Conv2d(in_channels, embed_dim, kernel_size=patch_size, stride=patch_size)\n",
    "\n",
    "    def forward(self, x):\n",
    "        x = self.proj(x).flatten(2).transpose(1, 2)\n",
    "        return x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "k2AvFeBvNwUQ",
    "outputId": "80862bb6-f9b7-45e9-c638-24d112f6ba0d"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([1, 9, 16])"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "torch.manual_seed(13)\n",
    "patch_embed = PatchEmbed(img.size(-1), kernel_size, 1, kernel_size**2)\n",
    "embedded = patch_embed(img)\n",
    "embedded.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 309
    },
    "id": "OY3ZcArZNwUR",
    "outputId": "e87d67ae-28dc-4a5f-d907-bca36a072220"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 252x288 with 9 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plot_seq_patches(embedded[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "WfFWwJiHNwUS"
   },
   "source": [
    "### Special Classifier Token"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {
    "id": "36fTjAcpNwUS"
   },
   "outputs": [],
   "source": [
    "imgs = torch.as_tensor(images[2:4]).float()/255."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 223
    },
    "id": "_bnPbXlNNwUT",
    "outputId": "c73437a9-a75d-4a4c-c1e5-9cbb1ccde397"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x216 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plot_images(imgs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {
    "id": "ZBPAYtSXNwUT"
   },
   "outputs": [],
   "source": [
    "embeddeds = patch_embed(imgs)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 436
    },
    "id": "4U9NfRw8NwUT",
    "outputId": "cb165f10-b029-402a-d463-dc586f08fa9f"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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KACAu7l8D9TJkyfl7e1dYJu3t7fOnTtnrSkAAEwwowAA7ubyCFT37t01e/Zs1a1bVyEhIdq2bZvmzp2r/v37u6M/AAAKxYwCALibywD19NNPa+rUqRozZoyOHDkif39/DR48mM/XAAB4HDMKAOBuLgNUpUqVNH36dE2fPt0d/QAAYIwZBQBwN5fvgQIAAAAAnEeAAgAAAABDBCgAAAAAMESAAgAAAABDpRwOR76nmwAAAACAkoAjUAAAAABgiAAFAAAAAIYIUAAAAABgiAAFAAAAAIYIUAAAAABgiAAFAAAAAIY8GqCSk5MVFhYmf39/derUSRs3bvRkO8WSmJioW265RYGBgWrYsKH69eunr7/+2tNt/SmJiYny9fXVI4884ulWii07O1vDhw9Xw4YN5e/vr4iICG3YsMHTbRVLXl6epkyZ4vyZCAsL05QpU5Sbm+vp1or0ySefqH///mrSpIl8fX2VkpJS4Ov5+flKSEhQSEiIAgICFB0drR07dnio20sr6jmcPXtWjz/+uG6++WbVqlVLjRs3VmxsrPbv3+/Bji/N1b/F740ePVq+vr5KSkpyY4clR0meTxIz6krDjPKMq2E+SVfHjLra5pPHAtSKFSsUHx+vMWPG6OOPP1Z4eLj69u17xf2DF2bDhg164IEH9O6772rVqlXy8fHRnXfeqWPHjnm6tcuyZcsWLV68WKGhoZ5updgcDoeioqKUn5+v5cuXa/PmzXr66adVvXp1T7dWLLNnz1ZycrJmzJihjIwMTZ8+XS+++KISExM93VqRfv31VzVt2lTTp09XuXLlLvr6c889p7lz52rGjBn68MMPVb16dfXu3Vu//PKLB7q9tKKew8mTJ/Xf//5XY8eO1UcffaTU1FT98MMPuuuuu664/zi4+re4YOXKlcrMzFTNmjXd2F3JUdLnk8SMupIwozznaphP0tUxo662+eSxD9KNjIxUaGionn/+eee2li1bqlevXnr88cc90dKfcuLECdWpU0cpKSnq0aOHp9spluPHj6tTp056/vnnNWPGDDVt2lQzZ870dFvGJk+erE8++UTvvvuup1v5U/r166cqVarohRdecG4bPny4jh07pmXLlnmwM3O1a9fW008/rXvuuUfS+b17ISEhGjp0qMaOHStJOnXqlIKCgvTUU09pyJAhnmz3kv74HC7lm2++Udu2bfXJ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\n",
      "text/plain": [
       "<Figure size 864x432 with 20 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plot_seq_patches_transp(embeddeds, add_cls=False, title='Image / Sequence')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 435
    },
    "id": "Vd2-zqL4NwUT",
    "outputId": "ae18e919-aefc-464f-82b6-e05ea150d489"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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f0F/++23kv57j1hYWJh2796toKAg1ahR47LzOnfurE2bNjmfqCldfEnT77//3iVcLv33l19+6XysdVFRkdLT013m/Z7boSy33367vLy8tHr16ss+MTQsLEybNm1SrVq1nA8rKa/BgwcrPT1dp06d0p133qmXXnpJgYGBSk5O1v79+50P1bj0uHTp4r1/YWFh2rBhg+Li4uTjc/HX18aNG/XLL7+U+x5SACgL+XQR+XT1+QTPQvlBpfrDH/6g5cuXKzY2VmPHjlVWVpYWLlxY6vT15MmT9corrygqKkozZsxQtWrVtHTpUlWvXt0lmHr37q27775b48aN0+TJk9WlSxd5eXnp+++/1wcffKCnn376sk/QTEtL06BBg8p12vrWW2/V7bffrgEDBqh58+b6+eef9fe//12rVq3SsGHDnCHw+OOPKywsTEOGDNHEiRPVrFkzORwOffXVVzp48KCWLl0qSZo5c6aGDRumMWPGaMKECTp69Kji4+NLPX64c+fOatmypWbPnq2SkhJVq1ZNr7zyin755ReXy/2e26EsLVu2VGxsrJYuXapTp05p8ODB8vb2VmZmpgIDAzV8+HDdc889SklJUWRkpCZPnqwOHTro3Llz+u677/Tuu+8qJSVFNWvWLHO+r6+vfH19tXnzZtlsNt19993y9vbWN998ozvuuEOdOnUq8+vi4uI0YMAA3XvvvZo4caJycnI0e/ZsRUZG8h4/AH4X8ol8kq49n44ePapPPvlEknTo0CGdOXPG+QIbbdu25aHZboTyg0oVFhamBQsWaOnSpdq0aZPatWunl156yeVJmdLF09obN25UXFycHnzwQfn6+mrChAk6duxYqccrr1y5UitWrNDrr7+u559/XtWrV5e/v7/CwsIu+2ouJ0+e1LZt2/Tqq6+Wa+9Zs2bpgw8+0Pz585Wfny9vb2+1bt1aTz31lGJiYpyX8/f3V3p6uhISEvTMM8/o6NGj8vX1Vbt27ZyvciNdvOfq5ZdfVkJCgv74xz+qVatWio+P10svveRyvT4+PkpNTdW0adMUGxurevXq6cEHH1SXLl1KvQzntdwOVzJ37ly1atVKycnJeuONN1SzZk0FBwc7n6RatWpVrV+/XosWLdKaNWuUk5OjmjVrqmXLlho4cKDzcdpX8ve//139+vWTt7e3jh8/rszMTC1evPiylw8JCdH6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xpkfAAAAAJZA+QEAAABgCZQfAAAAAJZA+QEAAABgCZQfAAAAAJZA+QEAAABgCZYoP8nJyQoJCZHdblffvn21Y8cOs1dykZiYqH79+snf31+tW7fWyJEj9eWXX5q91hUlJibKZrNp+vTpZq9SSl5enh588EG1bt1adrtdoaGh2r59u9lruSguLtbcuXOdfy9DQkI0d+5cFRUVmbrXJ598olGjRqldu3ay2WxKSUlx+XxJSYni4+MVFBQkPz8/RURE6KuvvnKrPc+fP68nn3xSt912m5o0aaK2bdsqOjpahw4dcqs9/9eUKVNks9mUlJRUiRvCHbhzRnliPklk1O9FRlXMjuSTe7juy8/69esVFxenRx99VB9//LG6d++uESNGmPIX7XK2b9+u+++/X++//742bdokHx8f3XXXXTp+/LjZq5Vp9+7dWr16tYKDg81epRSHw6Hw8HCVlJRo3bp12rVrl5599lk1bNjQ7NVcLF68WMnJyVqwYIEyMjKUkJCgl19+WYmJiabudfr0abVv314JCQmqUaNGqc+/8MILWrp0qRYsWKB//vOfatiwoYYNG6aff/7ZbfYsLCzUv//9b02bNk0fffSRUlNT9cMPP+juu++u9OD+rdvzko0bNyozM1ONGzeuxO3gDtw9ozwtnyQyyghkVMXsSD65h+v+TU7DwsIUHBysF1980Xmsc+fOioyM1JNPPmniZpd36tQpNWvWTCkpKRo8eLDZ67g4ceKE+vbtqxdffFELFixQ+/bttXDhQrPXcpozZ44++eQTvf/++2avckUjR45UvXr19NJLLzmPPfjggzp+/LjWrl1r4mb/1bRpUz377LMaO3aspIv3qAUFBWnixImaNm2aJOnMmTMKCAjQM888owkTJrjFnmX5+uuv1aNHD33yySem/Q/R5fb8/vvvFR4ernfeeUd33323Jk2apD/96U+m7IjK52kZ5c75JJFRRiGjKmbHspBPle+6PvNz7tw57dmzR/3793c53r9/f+3atcukrX7bqVOndOHCBdlsNrNXKWXKlCmKjIxUnz59zF6lTGlpaerSpYsmTJigNm3aqFevXlq5cqVKStyr4/fo0UPbt2/XN998I+niL79t27ZpwIABJm92eTk5OTpy5IjLv6caNWrotttuc+t/T5Kc9/q527+poqIiRUdHa9q0aWrbtq3Z66CSeWJG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\n",
      "text/plain": [
       "<Figure size 864x432 with 22 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plot_seq_patches_transp(embeddeds, add_cls=True, title='Image / Sequence')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "MekIClJxNwUU",
    "outputId": "a1f38349-7b70-4f3d-feed-274eca908f46"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Parameter containing:\n",
       "tensor([[[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]]],\n",
       "       requires_grad=True)"
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cls_token = nn.Parameter(torch.zeros(1, 1, 16))\n",
    "cls_token"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "xlwvhRoWNwUU",
    "outputId": "7243056c-4bb3-4793-b00a-0fadc3e7a3cf"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([16, 1, 12, 12])"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "images, labels = next(iter(train_loader))\n",
    "images.shape # N, C, H, W"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "XryPjUspNwUU",
    "outputId": "d8f887b9-1cc5-4950-da77-13138d84d489"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([16, 9, 16])"
      ]
     },
     "execution_count": 69,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "embed = patch_embed(images)\n",
    "embed.shape # N, L, D"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "vRQ2w07VNwUU",
    "outputId": "37546a64-2991-4274-cea9-52c5bf027bb2"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([16, 10, 16])"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cls_tokens = cls_token.expand(embed.size(0), -1, -1)\n",
    "embed_cls = torch.cat((cls_tokens, embed), dim=1)\n",
    "embed_cls.shape # N, L+1, D"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XQ6MBraCNwUV"
   },
   "source": [
    "### The Model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "dR2z9hjpNwUV"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/vit_model.png?raw=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {
    "id": "Ri3i8FRzNwUV"
   },
   "outputs": [],
   "source": [
    "class ViT(nn.Module):\n",
    "    def __init__(self, encoder, img_size, in_channels, patch_size, n_outputs):\n",
    "        super().__init__()\n",
    "        self.d_model = encoder.d_model\n",
    "        self.n_outputs = n_outputs\n",
    "        self.encoder = encoder\n",
    "        self.mlp = nn.Linear(encoder.d_model, n_outputs)\n",
    "\n",
    "        self.embed = PatchEmbed(img_size, patch_size, in_channels, encoder.d_model)\n",
    "        self.cls_token = nn.Parameter(torch.zeros(1, 1, encoder.d_model))\n",
    "        \n",
    "    def preprocess(self, X):\n",
    "        # Patch embeddings\n",
    "        # N, L, F -> N, L, D\n",
    "        src = self.embed(X)\n",
    "        # Special classifier token\n",
    "        # 1, 1, D -> N, 1, D\n",
    "        cls_tokens = self.cls_token.expand(X.size(0), -1, -1)\n",
    "        # Concatenates CLS tokens -> N, 1 + L, D\n",
    "        src = torch.cat((cls_tokens, src), dim=1)\n",
    "        return src\n",
    "    \n",
    "    def encode(self, source):\n",
    "        # Encoder generates \"hidden states\"\n",
    "        states = self.encoder(source)\n",
    "        # Gets state from first token: CLS\n",
    "        cls_state = states[:, 0]  # N, 1, D\n",
    "        return cls_state\n",
    "        \n",
    "    def forward(self, X):\n",
    "        src = self.preprocess(X)\n",
    "        # Featurizer\n",
    "        cls_state = self.encode(src)\n",
    "        # Classifier\n",
    "        out = self.mlp(cls_state) # N, 1, outputs\n",
    "        return out"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "RyplvskgNwUV"
   },
   "source": [
    "### Model Configuration & Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {
    "id": "VdCzmTlxNwUW"
   },
   "outputs": [],
   "source": [
    "torch.manual_seed(17)\n",
    "layer = EncoderLayer(n_heads=2, d_model=16, ff_units=20)\n",
    "encoder = EncoderTransf(layer, n_layers=1)\n",
    "model_vit = ViT(encoder, img_size=12, in_channels=1, patch_size=4, n_outputs=3)\n",
    "multi_loss_fn = nn.CrossEntropyLoss()\n",
    "optimizer_vit = optim.Adam(model_vit.parameters(), lr=1e-3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {
    "id": "v6iLsGP9NwUW"
   },
   "outputs": [],
   "source": [
    "sbs_vit = StepByStep(model_vit, multi_loss_fn, optimizer_vit)\n",
    "sbs_vit.set_loaders(train_loader, val_loader)\n",
    "sbs_vit.train(20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/",
     "height": 289
    },
    "id": "DFVYbfTpNwUW",
    "outputId": "f3e5abcd-cb27-45a8-b86c-b0fafb19080e"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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h+rtK7VpUx2Q77iqfa9eD6Wfn/Hq9h3zTAHayanx/2CQJECjgVBaChQXQygtNb4uLYXQwGlUtgmVbSgthaDXo+THH6EPD29cPVbEAExERETUECoVDL16wdCrF7RVbXo9ZGfOmK4SV/2u7aa/hhJu3YJw6xZw5UqNeR0asLykVFoMz1AoaobVkhIIJSXGaWt9YUlpqXXWe5cYgImIiIjulijCEBgIQ2AgtE88YWyTJAgXLlSH4mPHIB45AtnVqzYrS9BoIOTlAXl5NnvPugglJfYuwQwDMBEREVFTEgRIXbpA16ULdHFx1c3XrpkCsXD9evWzjm/7Mg9UPfu4li/taIkkpRKCRmPvMswwABMRERHZgOTtXf00jLoYDMavbbYQkIWbN1Fw7hzukcurvxHv9i8OqfrRaut+j9pqlMshuboCrq6QXF0hubgALi6QXFyM066uZtOo7GNpuuo1lMq7qsWaGICJiIiImhOZzPhECHd3SJ061Zh9JScHrnXdMChJQHl5zfBcWAjo9caA6uZWHWSrwqqra7MMq9bAAExERETUmggC4OwMydkZkk9z+4695oFfUUJEREREDoUBmIiIiIgcCgMwERERETkUBmAiIiIicigMwERERETkUITCwkLJ3kUQEREREdkKrwATERERkUNhACYiIiIih8IATEREREQOhQGYiIiIiBwKAzARERERORQGYCtKTk5Gjx494O3tjQceeAB79+6ts//u3bvxwAMPwNvbGz179kRKSoqNKrWfJUuWICYmBr6+vujatSvGjh2L7OzsOpfJzc2FWq2u8fPjjz/aqGr7SUxMrLHdf/vb3+pc5sSJExg+fDh8fHwQHByMRYsWQZJa/8NfunfvbvFz8sQTT9S6jKX+rfXvcM+ePRg3bhyCg4OhVqvx2Wefmc2XJAmJiYkICgqCj48PHn30UZw8ebLe9X7zzTeIiIhA+/btERERga1bt1prE2ymrn2l1WqxcOFCREZGomPHjggMDMQLL7yAixcv1rnOjIwMi5+306dPW3tzrK6+z9aLL75YY7sfeuihetfbGs+R9e0rS58RtVqNWbNm1bpORz5HNobc3gW0VmlpaZgzZw4WL16M/v37Izk5GWPGjEFmZiZ8fX1r9D9//jyeeOIJPPnkk1i9ejUyMzPxv//7v/D09MSIESPssAW2sXv3bjz//PPo06cPJEnC22+/jfj4eOzfvx8eHh51Lvvll1+iW7dupun6+rcWAQEB2LZtm2laFMVa+xYVFWHkyJGIjIzEf/7zH+Tk5GDatGlo06YNpk+fboty7WbXrl3Q6/Wm6atXryI6Ohrx8fF1Lrd8+XIMGzbMNO3u7m61Gu2ptLQUISEhGD9+PKZMmVJj/rJly7BixQqsWLECAQEBePfddzFy5Ej8+uuvcHNzs7jOAwcO4LnnnsPcuXPx+OOPY+vWrXj22Wfx/fffIzw83NqbZDV17atbt27hyJEjmDVrFrp3746ioiLMnz8fo0ePxp49eyCX132azczMNDt23XPPPVbZBluq77MFANHR0fj4449N00qlss51ttZzZH376tSpU2bTWVlZGDduXL3HMcBxz5ENxQBsJStWrMCECRMwceJEAEBSUhJ27tyJlJQULFy4sEb/tWvXwsfHB0lJSQCAwMBA/Pbbb/jwww9b9B93fdLS0symP/74Y3Tu3BmZmZl45JFH6ly2Xbt28Pb2tmZ5zZJcLm/wdm/evBllZWVYtWoVnJ2dERISgtOnT2PlypV46aWXIAiClau1nzuDxIYNG+Dm5oaRI0fWuVzbtm0d4nMVGxuL2NhYAMDUqVPN5kmShFWrVmHmzJmm48+qVasQEBCALVu2ICEhweI6V61ahaioKNPVqcDAQGRkZGDVqlX45JNPrLg11lXXvmrbti2+/vprs7alS5eif//+OHXqFEJDQ+tct5eXFzw9PZu2YDura39VUalUjfo7a63nyPr21Z37KD09Hf7+/hg0aFC963bUc2RDcQiEFWg0Ghw+fBgPPvigWfuDDz6I/fv3W1zmwIEDNfoPGTIEWVlZ0Gq1Vqu1uSkpKYHBYIBara6379NPPw1/f38MGzYM33zzjQ2qax7Onz+PoKAg9OjRA8899xzOnz9fa98DBw5gwIABcHZ2NrUNGTIEV65cQW5urg2qbR4kScKGDRswduxYs31hyZw5c3D//fcjJiYGKSkpMBgMNqqy+cjNzcW1a9fMjknOzs6IjIys9RgGAL/++qvF41hdy7RGxcXFANCg41h0dDQCAwMRFxeHX375xdqlNRv79u2Dv78/wsLCMGPGDOTl5dXZn+dI4/kxLS3NdGGtPo56jmwoBmAryM/Ph16vh5eXl1m7l5cXrl+/bnGZ69evW+yv0+mQn59vtVqbmzlz5qB79+7o169frX1cXV3x1ltvYe3atdi8eTMGDx6MhIQEbNq0yYaV2kd4eDhWrlyJLVu2YPny5bh27RpiY2NRUFBgsX9tn6uqeY5i165dyM3NxTPPPFNnv3nz5iElJQVff/01Ro0ahfnz52Px4sU2qrL5uHbtGgA06hhWtVxjl2ltNBoN5s+fj4cffhj33ntvrf18fHywZMkSbNiwARs2bEBAQABGjBhR770ircFDDz2Ejz76CN988w3++c9/4uDBg4iLi0NFRUWty/AcCWzZsgUajQbjx4+vs58jnyMbg0MgqNmYN28eMjMzsWPHjjrHtXp6epqNX+3duzcKCgqwbNkyjB071hal2s3QoUPNpsPDw9GrVy9s3LgRL730kp2qav7WrVuHPn36oHv37nX2e+2110yve/ToAYPBgMWLF+PVV1+1donUCuh0OkyaNAk3b97E559/XmffgIAABAQEmKb79euHCxcuYPny5YiMjLR2qXb1P//zP6bXoaGh6NWrF7p3747vv/8ecXFxdqyseVu3bh2GDx9e7zhxRz5HNgavAFuBp6cnRFGs8b908vLy0L59e4vLtG/f3mJ/uVy9i4iMAAAKVUlEQVTe6saHWTJ37lx8+eWX+Pbbb+Hn59fo5cPCwnDu3LmmL6yZc3V1RVBQUK3bXtvnqmqeI8jLy0N6enqD/7fh7cLCwlBUVORQVzCB6nGHjTmGVS3X2GVaC51Oh+effx4nTpzAN998g3bt2jV6HY56HOvQoQM6duxY57Y7+jny6NGjyMrKuqvjGOC4n626MABbgVKpRK9evbBr1y6z9l27diEiIsLiMv369bPYv3fv3lAoFFartTmYPXu2KfzW90iv2hw7dswhB/uXl5cjJyen1m3v168f9u3bh/LyclPbrl270KFDB3Tp0sVWZdrVxo0boVKpzK46NdSxY8fg5OSEtm3bWqGy5qtLly7w9vY2OyaVl5dj3759tR7DAKBv376NOu61FlqtFgkJCThx4gS2bt1618ciRz2O5efn48qVK3VuuyOfIwHj1d8uXbogOjr6rpZ31M9WXTgEwkqmTZuGyZMnIywsDBEREUhJScHVq1dNd09PnjwZAEyPgUlISMCaNWswZ84cJCQkYP/+/di4cSOSk5Pttg22MGvWLGzatAmffvop1Gq1aeyhi4sLXF1dAQD/93//h4MHD+Lb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\n",
      "text/plain": [
       "<Figure size 720x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = sbs_vit.plot_losses()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "hCdiBlVANwUW",
    "outputId": "857ee658-9908-40ce-8045-12b21869fe99"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Parameter containing:\n",
       "tensor([[[ 0.0557, -0.0345,  0.0126, -0.0300,  0.0335, -0.0422,  0.0479,\n",
       "          -0.0248,  0.0128, -0.0605,  0.0061, -0.0178,  0.0921, -0.0384,\n",
       "           0.0424, -0.0423]]], device='cuda:0', requires_grad=True)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_vit.cls_token"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "hdHnee0bNwUW",
    "outputId": "ff7e3f09-4ae9-425c-e5ef-c27b9d29626b"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[76, 76],\n",
       "        [65, 65],\n",
       "        [59, 59]])"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "StepByStep.loader_apply(sbs_vit.val_loader, sbs_vit.correct)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-U-CDTv0NwUX"
   },
   "source": [
    "## Putting It All Together"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "h05IC47VNwUX"
   },
   "source": [
    "### Data Preparation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "id": "WoTuWHxQNwUX"
   },
   "outputs": [],
   "source": [
    "# Training set\n",
    "points, directions = generate_sequences(n=256, seed=13)\n",
    "full_train = torch.as_tensor(points).float()\n",
    "target_train = full_train[:, 2:]\n",
    "train_data = TensorDataset(full_train, target_train)\n",
    "generator = torch.Generator()\n",
    "train_loader = DataLoader(train_data, batch_size=16, shuffle=True, generator=generator)\n",
    "\n",
    "# Validation/Test Set\n",
    "test_points, test_directions = generate_sequences(seed=17)\n",
    "full_test = torch.as_tensor(test_points).float()\n",
    "source_test = full_test[:, :2]\n",
    "target_test = full_test[:, 2:]\n",
    "test_data = TensorDataset(source_test, target_test)\n",
    "test_loader = DataLoader(test_data, batch_size=16)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "AO4kc1WxNwUe"
   },
   "source": [
    "### Model Assembly"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "3ae4wnjfNwUe"
   },
   "source": [
    "![](https://github.com/dvgodoy/PyTorchStepByStep/blob/master/images/full_transformer_and_class.png?raw=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "mx-VKEb1NwUe"
   },
   "source": [
    "#### 1. Encoder-Decoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {
    "id": "daCuCKi8NwUf"
   },
   "outputs": [],
   "source": [
    "class EncoderDecoderTransf(nn.Module):\n",
    "    def __init__(self, encoder, decoder, input_len, target_len, n_features):\n",
    "        super(EncoderDecoderTransf, self).__init__()\n",
    "        self.encoder = encoder\n",
    "        self.decoder = decoder\n",
    "        self.input_len = input_len\n",
    "        self.target_len = target_len\n",
    "        self.trg_masks = self.subsequent_mask(self.target_len)\n",
    "        \n",
    "        self.n_features = n_features\n",
    "        self.proj = nn.Linear(n_features, encoder.d_model)\n",
    "        self.linear = nn.Linear(encoder.d_model, n_features)\n",
    "            \n",
    "    @staticmethod\n",
    "    def subsequent_mask(size):\n",
    "        attn_shape = (1, size, size)\n",
    "        subsequent_mask = (1 - torch.triu(torch.ones(attn_shape), diagonal=1))\n",
    "        return subsequent_mask\n",
    "\n",
    "    def encode(self, source_seq, source_mask=None):\n",
    "        # Projection\n",
    "        source_proj = self.proj(source_seq)\n",
    "        encoder_states = self.encoder(source_proj, source_mask)\n",
    "        self.decoder.init_keys(encoder_states)    \n",
    "        \n",
    "    def decode(self, shifted_target_seq, source_mask=None, target_mask=None):\n",
    "        # Projection\n",
    "        target_proj = self.proj(shifted_target_seq)\n",
    "        outputs = self.decoder(target_proj,\n",
    "                               source_mask=source_mask,\n",
    "                               target_mask=target_mask)\n",
    "        # Linear\n",
    "        outputs = self.linear(outputs)\n",
    "        return outputs\n",
    "    \n",
    "    def predict(self, source_seq, source_mask):\n",
    "        inputs = source_seq[:, -1:]\n",
    "        for i in range(self.target_len):\n",
    "            out = self.decode(inputs, source_mask, self.trg_masks[:, :i+1, :i+1])\n",
    "            out = torch.cat([inputs, out[:, -1:, :]], dim=-2)\n",
    "            inputs = out.detach()\n",
    "        outputs = inputs[:, 1:, :]\n",
    "        return outputs\n",
    "                \n",
    "    def forward(self, X, source_mask=None):\n",
    "        self.trg_masks = self.trg_masks.type_as(X).bool()\n",
    "        source_seq = X[:, :self.input_len, :]\n",
    "\n",
    "        self.encode(source_seq, source_mask)\n",
    "        if self.training:\n",
    "            shifted_target_seq = X[:, self.input_len-1:-1, :]\n",
    "            outputs = self.decode(shifted_target_seq, source_mask, self.trg_masks)\n",
    "        else:\n",
    "            outputs = self.predict(source_seq, source_mask)\n",
    "            \n",
    "        return outputs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "pam5fHC7NwUg"
   },
   "source": [
    "#### 2. Encoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "id": "1_AaByiZNwUg"
   },
   "outputs": [],
   "source": [
    "class EncoderTransf(nn.Module):\n",
    "    def __init__(self, encoder_layer, n_layers=1, max_len=100):\n",
    "        super().__init__()\n",
    "        self.d_model = encoder_layer.d_model\n",
    "        self.pe = PositionalEncoding(max_len, self.d_model)\n",
    "        self.norm = nn.LayerNorm(self.d_model)\n",
    "        self.layers = nn.ModuleList([copy.deepcopy(encoder_layer)\n",
    "                                     for _ in range(n_layers)])\n",
    "    \n",
    "    def forward(self, query, mask=None):\n",
    "        # Positional Encoding\n",
    "        x = self.pe(query)\n",
    "        for layer in self.layers:\n",
    "            x = layer(x, mask)\n",
    "        # Norm\n",
    "        return self.norm(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "H5-Rvc97NwUg"
   },
   "source": [
    "#### 3. Decoder"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {
    "id": "DllAVrJ7NwUh"
   },
   "outputs": [],
   "source": [
    "class DecoderTransf(nn.Module):\n",
    "    def __init__(self, decoder_layer, n_layers=1, max_len=100):\n",
    "        super(DecoderTransf, self).__init__()\n",
    "        self.d_model = decoder_layer.d_model\n",
    "        self.pe = PositionalEncoding(max_len, self.d_model)\n",
    "        self.norm = nn.LayerNorm(self.d_model)\n",
    "        self.layers = nn.ModuleList([copy.deepcopy(decoder_layer)\n",
    "                                     for _ in range(n_layers)])\n",
    "        \n",
    "    def init_keys(self, states):\n",
    "        for layer in self.layers:\n",
    "            layer.init_keys(states)\n",
    "    \n",
    "    def forward(self, query, source_mask=None, target_mask=None):\n",
    "        # Positional Encoding\n",
    "        x = self.pe(query)\n",
    "        for layer in self.layers:\n",
    "            x = layer(x, source_mask, target_mask)\n",
    "        # Norm\n",
    "        return self.norm(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "-79xZjibNwUh"
   },
   "source": [
    "#### 4. Positional Encoding"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {
    "id": "HIqo4_VSNwUh"
   },
   "outputs": [],
   "source": [
    "class PositionalEncoding(nn.Module):\n",
    "    def __init__(self, max_len, d_model):\n",
    "        super(PositionalEncoding, self).__init__()\n",
    "        self.d_model = d_model\n",
    "        pe = torch.zeros(max_len, d_model)\n",
    "        position = torch.arange(0, max_len).float().unsqueeze(1)\n",
    "        slope = torch.exp(torch.arange(0, d_model, 2).float() * (-np.log(10000.0) / d_model))\n",
    "        pe[:, 0::2] = torch.sin(position * slope) # even dimensions\n",
    "        pe[:, 1::2] = torch.cos(position * slope) # odd dimensions\n",
    "        self.register_buffer('pe', pe.unsqueeze(0))\n",
    "\n",
    "    def forward(self, x):\n",
    "        # x is N, L, D\n",
    "        # pe is 1, maxlen, D\n",
    "        scaled_x = x * np.sqrt(self.d_model)\n",
    "        encoded = scaled_x + self.pe[:, :x.size(1), :]\n",
    "        return encoded"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "feWr1KpKNwUh"
   },
   "source": [
    "#### 5. Encoder \"Layer\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {
    "id": "hVq71WuxNwUh"
   },
   "outputs": [],
   "source": [
    "class EncoderLayer(nn.Module):\n",
    "    def __init__(self, n_heads, d_model, ff_units, dropout=0.1):\n",
    "        super().__init__()\n",
    "        self.n_heads = n_heads\n",
    "        self.d_model = d_model\n",
    "        self.ff_units = ff_units\n",
    "        self.self_attn_heads = MultiHeadedAttention(n_heads, d_model, \n",
    "                                                    dropout=dropout)\n",
    "        self.ffn = nn.Sequential(\n",
    "            nn.Linear(d_model, ff_units),\n",
    "            nn.ReLU(),\n",
    "            nn.Dropout(dropout),\n",
    "            nn.Linear(ff_units, d_model),\n",
    "        )\n",
    "        self.sublayers = nn.ModuleList([SubLayerWrapper(d_model, dropout) for _ in range(2)])\n",
    "         \n",
    "    def forward(self, query, mask=None):\n",
    "        # SubLayer 0 - Self-Attention\n",
    "        att = self.sublayers[0](query,\n",
    "                                sublayer=self.self_attn_heads, \n",
    "                                is_self_attn=True,\n",
    "                                mask=mask)\n",
    "        # SubLayer 1 - FFN\n",
    "        out = self.sublayers[1](att, sublayer=self.ffn)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "DoNvE43BNwUh"
   },
   "source": [
    "#### 6. Decoder \"Layer\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {
    "id": "aEFJ_P1ENwUi"
   },
   "outputs": [],
   "source": [
    "class DecoderLayer(nn.Module):\n",
    "    def __init__(self, n_heads, d_model, ff_units, dropout=0.1):\n",
    "        super().__init__()\n",
    "        self.n_heads = n_heads\n",
    "        self.d_model = d_model\n",
    "        self.ff_units = ff_units\n",
    "        self.self_attn_heads = MultiHeadedAttention(n_heads, d_model, \n",
    "                                                    dropout=dropout)\n",
    "        self.cross_attn_heads = MultiHeadedAttention(n_heads, d_model,\n",
    "                                                     dropout=dropout)\n",
    "        self.ffn = nn.Sequential(\n",
    "            nn.Linear(d_model, ff_units),\n",
    "            nn.ReLU(),\n",
    "            nn.Dropout(dropout),\n",
    "            nn.Linear(ff_units, d_model),\n",
    "        )\n",
    "        self.sublayers = nn.ModuleList([SubLayerWrapper(d_model, dropout) for _ in range(3)])\n",
    "                \n",
    "    def init_keys(self, states):\n",
    "        self.cross_attn_heads.init_keys(states)\n",
    "         \n",
    "    def forward(self, query, source_mask=None, target_mask=None):\n",
    "        # SubLayer 0 - Masked Self-Attention\n",
    "        att1 = self.sublayers[0](query, \n",
    "                                 sublayer=self.self_attn_heads, \n",
    "                                 is_self_attn=True, \n",
    "                                 mask=target_mask)\n",
    "        # SubLayer 1 - Cross-Attention\n",
    "        att2 = self.sublayers[1](att1, \n",
    "                                 sublayer=self.cross_attn_heads, \n",
    "                                 mask=source_mask)\n",
    "        # SubLayer 2 - FFN\n",
    "        out = self.sublayers[2](att2, sublayer=self.ffn)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "rvjwH1HDNwUi"
   },
   "source": [
    "#### 7. \"SubLayer\" Wrapper"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {
    "id": "VKjDZ1FxNwUi"
   },
   "outputs": [],
   "source": [
    "class SubLayerWrapper(nn.Module):\n",
    "    def __init__(self, d_model, dropout):\n",
    "        super().__init__()\n",
    "        self.norm = nn.LayerNorm(d_model)\n",
    "        self.drop = nn.Dropout(dropout)\n",
    "        \n",
    "    def forward(self, x, sublayer, is_self_attn=False, **kwargs):\n",
    "        norm_x = self.norm(x)\n",
    "        if is_self_attn:\n",
    "            sublayer.init_keys(norm_x)\n",
    "        out = x + self.drop(sublayer(norm_x, **kwargs))\n",
    "        return out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {
    "id": "MHDgTly6NwUj"
   },
   "outputs": [],
   "source": [
    "# Before\n",
    "def forward(self, query, mask=None):\n",
    "    # query and mask go in\n",
    "    norm_query = self.norm1(query)\n",
    "    self.self_attn_heads.init_keys(norm_query)\n",
    "    # the sublayer is the self-attention\n",
    "    states = self.self_attn_heads(norm_query, mask)\n",
    "    att = query + self.drop1(states)\n",
    "    # att comes out\n",
    "    ...\n",
    "    \n",
    "# After\n",
    "def forward(self, query, mask=None):\n",
    "    # query and mask go in\n",
    "    # the sublayer is the self-attention\n",
    "    # norm, drop, and residual are inside the wrapper\n",
    "    att = self.sublayers[0](query,\n",
    "                            sublayer=self.self_attn_heads, \n",
    "                            is_self_attn=True,\n",
    "                            mask=mask)\n",
    "    # att comes out\n",
    "    ..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "AZL83WGGNwUj"
   },
   "source": [
    "#### 8. Multi-Headed Attention"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {
    "id": "9fdt8QohNwUj"
   },
   "outputs": [],
   "source": [
    "class MultiHeadedAttention(nn.Module):\n",
    "    def __init__(self, n_heads, d_model, dropout=0.1):\n",
    "        super(MultiHeadedAttention, self).__init__()\n",
    "        self.n_heads = n_heads\n",
    "        self.d_model = d_model\n",
    "        self.d_k = int(d_model / n_heads)\n",
    "        self.linear_query = nn.Linear(d_model, d_model)\n",
    "        self.linear_key = nn.Linear(d_model, d_model)\n",
    "        self.linear_value = nn.Linear(d_model, d_model)\n",
    "        self.linear_out = nn.Linear(d_model, d_model)\n",
    "        self.dropout = nn.Dropout(p=dropout)\n",
    "        self.alphas = None\n",
    "\n",
    "    def make_chunks(self, x):\n",
    "        batch_size, seq_len = x.size(0), x.size(1)\n",
    "        # N, L, D -> N, L, n_heads * d_k\n",
    "        x = x.view(batch_size, seq_len, self.n_heads, self.d_k) \n",
    "        # N, n_heads, L, d_k\n",
    "        x = x.transpose(1, 2)  \n",
    "        return x\n",
    "\n",
    "    def init_keys(self, key):\n",
    "        # N, n_heads, L, d_k\n",
    "        self.proj_key = self.make_chunks(self.linear_key(key))\n",
    "        self.proj_value = self.make_chunks(self.linear_value(key))\n",
    "        \n",
    "    def score_function(self, query):\n",
    "        # scaled dot product\n",
    "        # N, n_heads, L, d_k x # N, n_heads, d_k, L -> N, n_heads, L, L\n",
    "        proj_query = self.make_chunks(self.linear_query(query))\n",
    "        dot_products = torch.matmul(proj_query, \n",
    "                                    self.proj_key.transpose(-2, -1))\n",
    "        scores =  dot_products / np.sqrt(self.d_k)\n",
    "        return scores\n",
    "            \n",
    "    def attn(self, query, mask=None):\n",
    "        # Query is batch-first: N, L, D\n",
    "        # Score function will generate scores for each head\n",
    "        scores = self.score_function(query) # N, n_heads, L, L\n",
    "        if mask is not None:\n",
    "            scores = scores.masked_fill(mask == 0, -1e9)\n",
    "        alphas = F.softmax(scores, dim=-1) # N, n_heads, L, L\n",
    "        alphas = self.dropout(alphas)\n",
    "        self.alphas = alphas.detach()\n",
    "        \n",
    "        # N, n_heads, L, L x N, n_heads, L, d_k -> N, n_heads, L, d_k\n",
    "        context = torch.matmul(alphas, self.proj_value)\n",
    "        return context        \n",
    "                                \n",
    "    def output_function(self, contexts):\n",
    "        # N, L, D\n",
    "        out = self.linear_out(contexts) # N, L, D\n",
    "        return out\n",
    "        \n",
    "    def forward(self, query, mask=None):\n",
    "        if mask is not None:\n",
    "            # N, 1, L, L - every head uses the same mask\n",
    "            mask = mask.unsqueeze(1)\n",
    "\n",
    "        # N, n_heads, L, d_k\n",
    "        context = self.attn(query, mask=mask)\n",
    "        # N, L, n_heads, d_k\n",
    "        context = context.transpose(1, 2).contiguous()\n",
    "        # N, L, n_heads * d_k = N, L, d_model\n",
    "        context = context.view(query.size(0), -1, self.d_model)        \n",
    "        # N, L, d_model\n",
    "        out = self.output_function(context)\n",
    "        return out"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "D0EbQOBmNwUj"
   },
   "source": [
    "### Model Configuration & Training"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {
    "id": "relmLO6nNwUk"
   },
   "outputs": [],
   "source": [
    "torch.manual_seed(42)\n",
    "# Layers\n",
    "enclayer = EncoderLayer(n_heads=3, d_model=6, ff_units=10, dropout=0.1)\n",
    "declayer = DecoderLayer(n_heads=3, d_model=6, ff_units=10, dropout=0.1)\n",
    "# Encoder and Decoder\n",
    "enctransf = EncoderTransf(enclayer, n_layers=2)\n",
    "dectransf = DecoderTransf(declayer, n_layers=2)\n",
    "# Transformer\n",
    "model_transf = EncoderDecoderTransf(enctransf, dectransf, input_len=2, target_len=2, n_features=2)\n",
    "loss = nn.MSELoss()\n",
    "optimizer = torch.optim.Adam(model_transf.parameters(), lr=0.01)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {
    "id": "WNWKnLgANwUk"
   },
   "outputs": [],
   "source": [
    "for p in model_transf.parameters():\n",
    "    if p.dim() > 1:\n",
    "        nn.init.xavier_uniform_(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {
    "id": "5lcICEImNwUk"
   },
   "outputs": [],
   "source": [
    "sbs_seq_transf = StepByStep(model_transf, loss, optimizer)\n",
    "sbs_seq_transf.set_loaders(train_loader, test_loader)\n",
    "sbs_seq_transf.train(50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "NcXuFB_INwUk",
    "outputId": "34ef2a00-9651-4792-d05a-39a65a07b3ef"
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.019648547226097435, 0.011462601833045483)"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sbs_seq_transf.losses[-1], sbs_seq_transf.val_losses[-1]"
   ]
  }
 ],
 "metadata": {
  "accelerator": "GPU",
  "colab": {
   "name": "Chapter10.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
